关于VC中的0x????处未处理的异常:0xC0000005

来源:互联网 发布:图片查重软件 编辑:程序博客网 时间:2024/05/21 16:02

转载于:http://hi.baidu.com/andywangcn/item/4b5a31594a06f1c8d2e10cc2


使用VC编码的时候经常会出现“Test.exe 中的 0x00414030 处未处理的异常: 0xC0000005: 写入位置 0xfeeefeee 时发生访问冲突 。”出现0xC0000005的原因一般都是没有分配内存 或者 内存无效 所致,

例如:

#include "stdafx.h"
#include <string>
using namespace std;

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

string * s = NULL;
s = new string();
delete s;

if (s != NULL)
{
   *s = "TEST"; //这步操作将引起异常。
}

return 0;
}

虽然s已经被delete了,但是s的值并不为NULL,if语句的判断将失效,这是新手常见的一个错误!

为了防止这个错误可以自己定义一个宏来处理delete。

#define _DELETE(obj) if (obj != NULL) {delete obj , obj = NULL;}

使用这个宏可以防止类似错误出现。

原创粉丝点击