簡單點說就是只申請不釋放:
在c++中我們通過malloc,new來通過系統申請記憶體,但當我們使用完畢之後**裡面可能就沒有執行相應的free和delete的操作,這樣我們申請的這部分記憶體系統就不會再次的**分配,這就造成了記憶體洩露!!!
這篇帖子講的很細大家可以研究研究。
我們在delete乙個指標之後要將這個指標置null,
為啥要這麼搞呢?因為delete之後我們只是釋放掉了這個指標所指的記憶體,這塊記憶體os是可以再分配給其他人來使用的,
這樣這個指標就成了野指標,這個野指標會在code的其他地方被修改,進而影響其他人對這塊記憶體的使用。
所以這種情況我們不能稱之為記憶體洩露,只能說是野指標造成影響其他人對這塊記憶體的使用。
但這種情況會造成程式的崩潰:為啥呢?
因為這個野指標我們已經我發把控了,程式的訪問記憶體中的內容我們也就無法把控,所以程式也就跑飛了
有個小例子:
class obj
~ obj( )
void initialize( )
void destroy( )
}obj;
void usemallocfree( )
void usenewdelete( void )
C 記憶體洩露
boost基礎 any int p new int 10 應該用 shared ptrp new int 10 boost any a p 危險,會造成記憶體洩露any 的析構函式會刪除內部的 holder 物件 any 是包裝類 如果型別是指標,any 並不會對指標執行 delete 操作,因此,...
C 記憶體洩露
c 記憶體洩露主要發生在淺拷貝階段 例如 include include include includeusing namespace std class a a int main 由於發生了淺拷貝,所以程式退出的時候,就中斷了,因為同一記憶體析夠了2次。至於為什麼同一物件析夠2次就會中斷,是因為已...
C 記憶體洩露
一,c 記憶體洩露 下面列出的是有可能導致記憶體洩露的幾種情況 1,在類的建構函式與析構函式中沒有匹配呼叫new與delete運算子 這種情況需要注意兩個問題 a,在建構函式中使用new分配記憶體,但是在析構函式中沒有釋放掉記憶體。b,在建構函式中使用new 分配記憶體,但是在析構函式中使用dele...