JidanIt的专栏

0xC0000005: Access Violation错误调试- – Oh my god,耗费我了几个小时的时间,请教了Zz和Tina后,终于搞定了一部分了。 归根结底是内存分配的问题,,如果不分配内存,就会导致访问冲突。 开始是个类的构造没有写,,,(写在另一个类的一个函数里面了,但是没有调用),后来是一些结构没有初始化。调用osip库的init系列初始化后,错误减少了很多。 现在还有很多错误,待我一一debug过去。 ———————————————————————————————————— r.exe中的0x7c235aac(mfc71d.dll)处未处理的异常:0xC0000005:读取位置0x00000068时发生访问冲突。 r.exe中的0x7c235aac(mfc71d.dll)处未处理的异常:0xC0000005:读取位置0x00000068时发生访问冲突。 vs2003.net。一个原来用vs.net编写的程序。打开*.sln后按提示转换。加了几个方法。 编译时就出现这个错误。 一般是什么原因造成的啊。 感觉vs2003比我原来用过的所有版本VC的问题加起来还多 ——————————————————————————– 悄悄告诉你!!! 数据越界或是定义的指针未释放. —————————————————————————————————————————— 空的指针的可能性最大。使用指针前最好能显式的赋值! 应该是指针的问题 10有8、9 ——————————————————————————– 内存访问错误,检查指针,是否为空,是否越界等 ——————————————————————————– 你还是用调试定位一下错误吧。 ——————————————————————————– 访问空指针 x004136c8,结合.Map文件,查找所对应的源代码。 ————————————————————————————— pBBuf是0x00000000 也就是说是访问pBBuf的时候出问题了,但不知道怎么去查了 —————————————————————————————————————————— rsgl.exe 中的 0x00000000 处最可能的异常:0xC0000005: 读取位置 0x00000000 时发生访问冲突 。 怎么可能发生这种情况呢? ——————————————————————————– 打开Project Setting面板, 看你的Debug和Release的各项设置是否有什么不应该的出入. ——————————————————————————– 没有 ——————————————————————————– 有可能指针访问违例了。调试一下看看指针的地址是否变了。 ——————————————————————————– 最可能的原因是存在内存的越界访问…..其他可能的原因包括 ASSERT 语句里是不是包括了 release 版本里也必须执行的代码….. ——————————————————————————– 用boundercheck内联到VC6里编译,找出那里有写出界的。 ——————————————————————————– 终于搞定,有个类中含有指针,在复制时出错,谢谢大家! ———————————————————————————————————————— 我的软件是用VC6.0写的,编译成Release版以后运行在NT4.0+SP6的机器上.但是它运行后短时间(30天)是稳定的,时间一长(2个月) 就最后出来一个访问冲突的错误,然后NT4的Dr.Waston就跑出来报告说:”XXXX.EXE 意外错误:访问冲突(0xc0000005),地址:0x00405239″然后让用户选择关闭还是取消.这里的XXXX.EXE就是我写的软件了. 问题是这个错误差不多每40天才出现一次,软件是运行在某个工厂服务器上的,而每次发生错误的时候我都无法到现场去,我在办公室也无法使这个错误重现,所以只能根据用户给的信息来debug了.而每次得到的错误信息都是上面同样的信息.且引起错误代码地址必定是0x00405239. 我的问题是如何根据系统提供的这个0x00405239地址确定我的程序中哪行源代码出了问题? ——————————————————————————– 呵呵,问题找到了. 原来编译的时候可以生成一个map文件,通过这个map文件可以定位每个函数在内存中的地址. 好了,现在我已经确定了是哪个函数发生了问题了,这下就好找了 ——————————————————————————– VC6.0的project->setting->link->generate mapfile 生成的map文件可以用记事本直接打开查看. ——————————————————————————– map 对release的Crash的Debug很重要 用VC的都应该学一下. 请朋友们参考Microsoft MSDN John Robbins 的文章 ?page=/msj/1099/bugslayer/bugslayer1099.htm&nav=/msj/1099/newnav.htm 并search “bugslayer”, 你debug的工夫会大增 —————————————————————————————————————— 可能性 3 种 1: char *p; p = new char[number]; delete [] p; …. // always using p…. p = xxx; // access violation 2: char *p; memcpy(p, xxx, number); // access violation 3: char *p; p = new char[number]; delete [] p; ……… delete [] p; // access violation 看你的情况,应该内容已经被清除了但是还在赋值或者进行操作,或者指针根本没有申请内存但是进行了操作。 好像都是废话。。。-_-

人生就是要感受美丽的善良的,丑恶的病态的。

JidanIt的专栏

相关文章:

你感兴趣的文章:

标签云: