Windows 7中的奇怪异常现象

时间:2010-06-17 04:19:26

标签: c++ windows visual-c++ exception-handling

我在CodeProject中发现了一些有关异常句柄的有趣文章

http://www.codeproject.com/KB/cpp/seexception.aspx

看完之后,我决定做一些实验。

我第一次尝试执行以下代码

char *p;
p[0] = 0;

该计划毫无疑问地死亡。

但是

经过几次我执行相同问题的二进制代码, 它神奇地做得很好。

即使以下代码也表现良好。 有任何线索或解释吗?

char *p;
p[1000] = 'd';
cout<<p[1000]<<endl;

My O / S是Windows 7 64位,编译器是VS2008 rc1。

1 个答案:

答案 0 :(得分:1)

取消引用不指向对象的指针(例如,未初始化的指针)会导致未定义的行为。

这意味着任何事情都可能发生。通常,通过未初始化的指针写入将导致程序崩溃 - 无论是立即还是将来的某个时刻。可以想象,您的程序似乎可以继续正常运行,但您永远不能依赖它。