`
tcspecial
  • 浏览: 896355 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

0xC0000005;Access Violation

    博客分类:
  • QT
阅读更多

     写C/C++程序最怕出现这样的提示了,还好是在调试环境下显示出来的,在非调试状态就直接崩溃退出. 

     访问非法

     从上述汇编代码发现在取内存地址 eax+38h 的值时出错, 那说明这个地址非法呗, 不能访问, 一般是访问了空指针引起的. 

  

     

 

   直接调用QList::append()方法也会出错了, 此时汇编也指向的是在读取内存 ebp-8 时出错. 这段代码运行背景是在栈上申请了很多缓冲区,然后缓冲区在不停添加内容, 直到某一阶段程序崩溃. 由于栈区空间很宝贵, linux上栈区空间默认为8M,vc6下默认栈空间大小为1M, 当栈上数据过大时, 栈区已经被损坏了, 此时访问到无效的内存地址. 所以程序里面经常会出一些莫名其妙的崩溃, 调试定位到的代码也非常正常, 这下就应该注意了, 是否栈上数据过大,已经损坏. 当操作大量数据时, 最好在堆上分配 .  

 

 

   

  • 大小: 19.8 KB
  • 大小: 9.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics