析构函数中的一个小疑点!
析构函数中的一个小问题!!
如这段代码,delete删除的为什么是ip,而用delete ip[]就会出错,明明ip初始化的位数组啊!
------解决方案--------------------
应该是这样吧 delete [] ip; 吧
------解决方案--------------------
delete [] ip;
------解决方案--------------------
- C/C++ code
class Linear { public: int *ip; int length; int listSize; Linear():length(0),listSize(10),ip(new int[listSize]) { } ~Linear(){ delete ip; } }
如这段代码,delete删除的为什么是ip,而用delete ip[]就会出错,明明ip初始化的位数组啊!
------解决方案--------------------
应该是这样吧 delete [] ip; 吧
------解决方案--------------------
delete [] ip;
------解决方案--------------------
- C/C++ code
if( NULL != ip) delete [] ip;
------解决方案--------------------
------解决方案--------------------
除了上面的判断,还得把int *ip;定义在listSize后
因为初始化列表的顺序是数据成员声明的顺序
而不是你这样的顺序“length(0),listSize(10),ip(new int[listSize])”
listSize没初始化就初始化ip
------解决方案--------------------