在一个类的析构函数中要释放掉的成员,在该的构造函数中一定要有对这个成员的内存分配或指向NULL。
如:
class A { public: A(){ p = NULL; // 初始化为NULL }; A(int v){ p = new int; // 分配新的内存 *p = v; } // 下面这个是有问题的: A(int * v){ p = v; } ~A(){ if( NULL != p ){ delete p; } } private: int *p; }
在一个类的析构函数中要释放掉的成员,在该的构造函数中一定要有对这个成员的内存分配或指向NULL。
如:
class A { public: A(){ p = NULL; // 初始化为NULL }; A(int v){ p = new int; // 分配新的内存 *p = v; } // 下面这个是有问题的: A(int * v){ p = v; } ~A(){ if( NULL != p ){ delete p; } } private: int *p; }