C/C++教程

vc程序崩溃-与内存关系

本文主要是介绍vc程序崩溃-与内存关系,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

书上说, 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程序崩溃-与内存关系

这篇关于vc程序崩溃-与内存关系的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!