首页 > 其他 > 详细

vc程序崩溃-与内存关系

时间:2021-06-02 21:21:15      阅读:12      评论:0      收藏:0      [点我收藏+]

最近调试一个软件,到现场解决问题。 现象是软件过一会就不见了。也不知道是什么时候退出的。还有就是系统蓝屏之后,系统重启。这么奇怪的现象,对我这个门外汉来说,无法理解。

软件闪退,与内存有关吗? 同事高速我,软件退出,与内存有关系。

书上说, new 与delete的关系。 释放内存。 如果不释放呢?
下面是程序。 两重循环,开辟了 几个G的内存。

#include "stdafx.h"

#define MAX 1000

int _tmain(int argc, _TCHAR* argv[])
{

int i, j;
for (j = 0; j < MAX; j++)
{

    for (i = 0; i < MAX; i++)
        new int[10000];
}

printf("hihi");
getchar();
return 0;

}

程序运行结果, 确实没有出现 hihi。 界面直接就退出了。 说明,控制台写的程序,new申请的内存,不释放,确实会闪退。

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

另外用MFC新建了一个简单的单对话框工程,加一个按钮,关联OnBnClickedButton1函数。

#define MAX 100000

void CmemTestMFC2Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码

int i, j, k;
for (i = 0; i < MAX; i++)
{
    for (j = 0; j < MAX; j++)
        new int[1000];
}

}

运行的结果是。MFC系统竟然神奇的提示出来了“内存不足”4个字。 意思就是有new内存,不释放。

打开任务管理器,可以看到我创建的工程的名字叫memTestMFC2, 它在任务管理器里面,显示它占的内存,如红色框里面所示, 1812M大小。

从运行效果上看,当点击按钮测试的时候, 就是出现了内存不足的提示框。 这个时候,无论是点击确定,或者右上角的X。 软件界面直接不见了。
结论: MFC里面,内存也会导致界面退出。

技术分享图片

vc程序崩溃-与内存关系

原文:https://blog.51cto.com/u_14018328/2848022

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!