0xC0000005;Access Violation(栈区空间很宝贵, linux上栈区空间默认为8M,vc6下默认栈空间大小为1M)

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0xC0000005;Access Violation(栈区空间很宝贵, linux上栈区空间默认为8M,vc6下默认栈空间大小为1M)相关的知识,希望对你有一定的参考价值。

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

     技术分享图片

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

  

     技术分享图片

 

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

http://tcspecial.iteye.com/blog/1909831

以上是关于0xC0000005;Access Violation(栈区空间很宝贵, linux上栈区空间默认为8M,vc6下默认栈空间大小为1M)的主要内容,如果未能解决你的问题,请参考以下文章

Win10下装 VC6.0单步调试报((OLE32.DLL): 0xC0000005: Access Violation)

Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x......

VMWare14使用快照功能时出现“Exception 0xc0000005 (access violation) has occurred.”

Solve Error: Unhandled exception at 0x00905a4d in xxx.exe: 0xC0000005: Access violation.

VMware Workstation 不可恢复错误: (vcpu-1) Exception 0xc0000005 (access violation) has occurred终极解决方案

0xC0000005;Access Violation(栈区空间很宝贵, linux上栈区空间默认为8M,vc6下默认栈空间大小为1M)