1、new了之后没有delete掉
2、释放对象数组时使用delete而没有使用delete[ ]
3、缺拷贝构造函数
当类中有用指针指向另一个内存,且没有定义拷贝构造函数时,编译器会使用默认拷贝构造函数,把原来对象的指针的值赋给新的对象中对应指针的值,这时2个指针会指向同一个内存,当其中一个对象析构后,内存被释放,第二个对象析构时,会重复释放这个已经释放过的内存,造成二次释放
4、没有重载类的赋值运算符
同3
5、存在继承时,没有将基类的析构函数声明为虚函数
当基类的析构函数不是虚函数时,子对象的指针或引用调用基类的析构时,就没有动态绑定,这时就只会析构掉子类对象中基类的部分,而其它部分则没有析构
6、指针越界