心得分享:C类成员指针默认不为NULL的原因


今天早上碰到一个诡异的问题:
修改C类时,为其添加了一个指针成员,然后在析构函数中delete。
改完后按ctrl+shift+b ,运行。。。结果在模拟器上报错kern-exec 3。
C类会默认初始化指针为NULL,所以析构函数中DELETE应该不会有问题,
调试,原因是delete指针出错,发现该指针的确不为NULL,而是0x00000044,并且在构造中显示为指针赋值为NULL也会报错(User 42)。

问题原因:
代码没有任何问题,问题在于修改头文件时增加成员变量之后,没有rebuild!
如果仅仅是build,vc是不会去检查头文件的改动,编译顺利通过,但运行时,新的成员变量在内存中是不确定的。
VC真是不够智能。。。

总结:
大家修改头文件,特别是增减成员变量的时候,一定要rebuild一下,否则可能碰到这个问题。
指针成员可能还会报错,如果是T类就看不出来,有可能运行结果不对。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值