我在 CodeProject 中发现了一些关于异常处理的有趣文章
http://www.codeproject.com/KB/cpp/seexception.aspx
看完后,我决定做一些实验。
我第一次尝试执行以下代码
char *p;
p[0] = 0;
程序毫无疑问地死了。
但是
当我多次执行相同问题的二进制代码后, 它神奇地做得很好。
即使是下面的代码也运行良好。 有什么线索或解释吗?
char *p;
p[1000] = 'd';
cout<<p[1000]<<endl;
我的操作系统是 Windows 7 64bit,编译器是 VS2008 rc1。
最佳答案
取消引用不指向对象的指针(例如,未初始化的指针)会导致未定义的行为。
这意味着任何事情都可能发生。通常,通过未初始化的指针写入会导致您的程序崩溃——要么立即崩溃,要么在未来某个时候崩溃。可以想象您的程序可能会继续正确运行,但您永远不能依赖它。
关于c++ - Windows 7奇怪的异常现象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3058833/