犯了个很隐蔽的错误,是因为自己想当然的人为一个指针delete之后其值为NULL。
原来代码中有一段是判断一个指针是否为NULL,如果不是就引用这个指针指向的对象,结果,呵呵,当然就是犯错误了。
写了一小段代码测试如下:
运行结果如下:
可见delete之后的指针其值还是原来对象的地址,只是他已经没有权限饮用这段地址指向的对象了。
其实在这种情况下调用delete之后的指针引用的对象是不合法的,估计是windows没有把它当成严重错误来处理。
这类错误是观念上的错误,“想当然尔”,很多时候是要犯错误的,没有把握的东西还是做个小实验来验证下比较好,省得花大把的时间找BUG的所在。