今天早上碰到一个诡异的问题:
修改C类时,为其添加了一个指针成员,然后在析构函数中delete。
改完后按ctrl+shift+b ,运行。。。结果在模拟器上报错kern-exec 3。
C类会默认初始化指针为NULL,所以析构函数中DELETE应该不会有问题,
调试,原因是delete指针出错,发现该指针的确不为NULL,而是0x00000044,并且在构造中显示为指针赋值为NULL也会报错(User 42)。
问题原因:
代码没有任何问题,问题在于修改头文件时增加成员变量之后,没有rebuild!
如果仅仅是build,vc是不会去检查头文件的改动,编译顺利通过,但运行时,新的成员变量在内存中是不确定的。
VC真是不够智能。。。
总结:
大家修改头文件,特别是增减成员变量的时候,一定要rebuild一下,否则可能碰到这个问题。
指针成员可能还会报错,如果是T类就看不出来,有可能运行结果不对。