記憶體洩露產生:沒有釋放在堆中申請的記憶體。
從makecat函式返回乙個指標,之後再main函式裡釋放記憶體。
我認為,最好封裝在函式裡,new和delete看起來才有對稱感。
還需要再改進。
既然提到了,就說一下迷途指標和記憶體洩露的原理和避免方法:
迷途指標:將delete用於指標,但沒有將指標置為空而引發的。說白了,就是搞不清指標指向的記憶體是否被釋放了。(這時,如果再次釋放,或者讓指標指向別的記憶體位址,都可能會導致記憶體洩露。)避免的方法是養成良好的程式設計習慣:申請指標的時候就對指標進行初始化,如果不知道初始值是什麼,就先置0;同理,delete刪除指標指向的記憶體後,也要把指標重新置0,這時,如果對空指標delete,編譯器會自動跳過不執行。
記憶體洩露:1,重複delete。2,引用區域性函式的變數。3,重新給指標賦值之前沒有釋放它原來指向的記憶體。
說白了,就是沒有釋放在堆中申請的記憶體,就是把記憶體的位址丟了。如果把記憶體比作房子,指標比作門牌號。就是把門牌號忘記了。
好的習慣是,結合初始化指標的習慣和置0指標的習慣,每次讓指標指向別的記憶體之前,先判斷該指標是否為空。如果不為空,說明指標還留著別的位址。其實如果new和delete養成對稱的習慣,就不會導致記憶體洩露的。
早發現錯誤,早修正bug。
做個有良好程式設計習慣的程式設計師。
記憶體洩露。可是怎麼避免呢?
記憶體洩漏也稱作 儲存滲漏 用動態儲存分配函式動態開闢的空間,在使用完畢後未釋放,結果導致一直佔據該記憶體單元。直到程式結束。其實說白了就是該記憶體空間使用完畢之後未 即所謂記憶體洩漏。記憶體洩漏形象的比喻是 作業系統可提供給所有程序的儲存空間正在被某個程序榨乾 最終結果是程式執行時間越長,占用儲存...
迷途指標 new delete
程式設計中有一種很難發現的錯誤是迷途指標。迷途指標也叫懸浮指標 失控指標,是黨對乙個指標進行delete操作後 這樣會釋放它所指向的記憶體 並沒有把它設定為空時產生的。而後,如果你沒有重新賦值就試圖再次使用該指標,引起的結果是不可預料的。空指標和迷途指標的區別?當delete乙個指標的時候,實際上僅...
operator 要注意避免記憶體洩露(專案經驗)
指標不論是指向malloc還是new分配得到的記憶體,一定要注意在改變指標指向之前一定要先釋放舊的記憶體塊。class test p char malloc sizeof char test const test c1 test void operator test c2 這裡很重要,a b時,a本...