我在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。
答案 0 :(得分:1)
取消引用不指向对象的指针(例如,未初始化的指针)会导致未定义的行为。
这意味着任何事情都可能发生。通常,通过未初始化的指针写入将导致程序崩溃 - 无论是立即还是将来的某个时刻。可以想象,您的程序似乎可以继续正常运行,但您永远不能依赖它。