永发信息网

C0000005: 读取位置 0xCCCCCCCC 时发生访问冲突

答案:2  悬赏:10  手机版
解决时间 2021-04-04 05:30
  • 提问者网友:沦陷
  • 2021-04-03 05:12
C0000005: 读取位置 0xCCCCCCCC 时发生访问冲突
最佳答案
  • 五星知识达人网友:舍身薄凉客
  • 2021-04-03 06:50
不知道你是编写C++还是C#程序,也没有出错位置源代码,因此无法确认具体错误细节,但是从出错信息看,程序访问的对象为无效地址。

如果是C++应该是访问了非法指针,也就是野指针,指针没初始化,并且没有进行指针有效性判断。如果是C#,应该是访问的对象为null,没创建对象。

其实两者实质都是一样,因为编译器对于没有初始化的变量,每个字节都会自动填充0xCC,这是机器语言中的中断指令,为的就是阻止非法访问。

用查找工具查找所有指针定义和对象定义。追问谢谢指导,此程序是C++代码,没有放上代码主要是关联程序和动态库较多,至于您说的可能是野指针的情况,这个我从网上也查询过,只是VS2008编译运行且一直正常,由此可见应该不是代码本身出错,毕竟如果真是访问野指针等程序本身错误的话,VS2008就算编译通过,也不可能一直运行没问题,这个问题也只是在VS2013编译通过后,运行出错,调试时才发现的问题报错问题~追答不要相信编译器,不同编译器自动处理不同(隐含转换/处理),代码肯定存在BUG。只是之前的编译器编译结果不同没有触发而已,这种问题最难查,所以涉及到指针和引用,要养成好习惯,我在编写C++时,无论什么情况,遇到可能存在内存泄露的地方都必须显式处理(new 创建的内存块),养成如下习惯:
//定义指针
int *p=null;
//访问指针
if (p).......
//函数结束必须释放指针
if (p)
{
   delete []p;//假设是数组
   p=null;

当然你的问题还有一种情况就是数组越界。
追问谢谢给予的解答~
全部回答
  • 1楼网友:十鸦
  • 2021-04-03 08:26
USB排插充电器批发 有需要可以扫描我的头像二维码
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯