正确释放指针的方式

正确释放指针的方式

释放指针所指向的内存中存在一些坑,这里总结一下

坑点一

在释放内存之时,不仅仅是将该块内存进行释放,还要将指向该块内存的指针置为NULL。如果不置为NULL,该指针将变成悬空指针,下次继续使用该指针时会出现问题。

总之,free或者delete只是将指针指向的内存进行释放,却并没有对指针做任何操作。

坑点二:

只使用上文方法释放内存,依旧会存在以下隐患:

指针释放并值为空,如果只是简单的指针变量,几乎没有时间消耗;但是如果在类的析构函数中delete指针成员变量,可能执行的时间比较长,如果这个时间段内有其他地方再操作这个这个指针变量,将产生错误,所以需要采用防御性编程,如下所示:

// 假设m_instance是类的指针型成员变量

CServerSocket* m_instance;

if (m_instance != NULL)

{

CServerSocket* tmp = m_instance;

m_instance = NULL; // 先置为空,防止其他地方使用即将释放的指针

delete tmp; // 再释放指针所指向的内存

}

相关文章

魅族换触摸屏多少钱
bt365官网

魅族换触摸屏多少钱

08-11 阅读: 1629
广州离杭州多远 几个小时
365安卓版

广州离杭州多远 几个小时

08-02 阅读: 1231
冰霜主教(Clair Obscur Expedition 33):如何获胜
手机排线坏了要多少钱
bt365官网

手机排线坏了要多少钱

08-09 阅读: 2241
速8酒店app
下载bst365

速8酒店app

07-12 阅读: 6548
我的世界OP打雷指令 2套打雷作弊指令一览