您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 这样的内存异常为什么捕获不到?

这样的内存异常为什么捕获不到?

来源:网络整理     时间:2016/8/19 20:23:12     关键词:

关于网友提出的“ 这样的内存异常为什么捕获不到?”问题疑问,本网通过在网上对“ 这样的内存异常为什么捕获不到?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 这样的内存异常为什么捕获不到?
描述:

以下程序的内存异常为什么捕获不到?
try
{
   char *a = new char[100];
   a[200] = 100;
   delete [] a;
}
catch(...)
{
   printf("a error");
}


解决方案1:

try
{
int* a = new int[10];
a[100] = 112;
delete []a;
}
catch(...)
{
   cout << "" << endl;
}
更正,这段代码我刚才测试一下(VS。NET),编译器能捕获这个异常
并能够运行正常,很奇怪,等待其他人更好的解释吧

解决方案2:

我认为:
就算是异常,你也永远捕获不到
a[200] = 100;已经将整个线程的堆栈破坏,因为试图访问内存保护区域
就算侥幸逃过了,你也破坏了下一内存页面的数据
我想一般的情况下,整个进程都挂掉

解决方案3:

因为这不是异常,而是错误

解决方案4:

这是缓冲区溢出,不是异常。能否catch到取决于溢出数据造成了什么破坏。


以上介绍了“ 这样的内存异常为什么捕获不到?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3400907.html

相关图片

相关文章