在 C++ 中用类的 new 和 delete 时,最好要注意的是,不能把 new 的指针强制转化成其它的指针(基类除外)后
再 delete,否则会容易引起内存泄露,如下
class CTest
{
public:
char *pData; ///类内有指针
CTest(void)
{
pData = NULL;
pData = new char [1000]; ///分配内存
}
~CTest()
{
delete []pData; ///回收内存
pData = NULL;
}
};
调用方法如下:
CTest *p = new CTest;
char *pData = (char *)p; ///转化为其它指针了
delete pData; ///有内存泄露,类内 pData 指向的指针的内存没有回收,因为这样不能调用析构函数
pData = NULL;
类指针强制转化有可能引起内存泄漏
最新推荐文章于 2023-07-04 15:07:23 发布