用malloc給乙個字串分配記憶體,返回這個字串,記憶體會洩露嗎?

時間 2021-06-30 14:03:47

1樓:xtang

如果程式從main() 返回結束,或者說「程序結束」,程序占用的記憶體還沒有被釋放的話,那就是作業系統有問題了。(有特殊情況除外,比如共享記憶體)

一般來講的程式「記憶體洩露」,通常是指在程式裡申請使用記憶體後,沒有及時釋放;或者因為程式邏輯原因,無法釋放(比如記憶體指標被重置了)。

回到題主的問題,malloc() 分配的記憶體,是屬於程式的,只要程式不退出,這塊記憶體就是有效的。把這塊記憶體返回給程式內的別的函式是完全正常的操作。

但是,如果這塊記憶體處理結束後沒有正確 free() 的話(可以在程式的任何函式裡 free()),那麼這塊程式就一直屬於程式了。

如果這個邏輯大量重複,就會導致不斷malloc(),大量記憶體被你的程式占用,最後系統資源不夠而出錯。

要注意的是,malloc()以後不 free() 也許是正確的,程式邏輯上就是這樣要求的;這個時候,可能不算「記憶體洩露」,只能說是乙個很差的程式邏輯。

C語言,用陣列定義乙個字串,那這個字串是怎麼儲存在這個陣列中的呢?

the gc 對於scanf的 s的解釋如下 Matches a sequence of non white space characters the nextpointer must be a pointer to the initial element of acharacter array t...

如何通過只翻轉乙個字串的子串對該字串進行排序?

老版題是NP很多人已經給出參考文獻了。新版題是裸dp 設len是字串strls的長度,那麼定義dp len 1 2 表示直到長度x 0 x len 最後一位strls x 1 不翻轉 翻轉 0 1 所需的最小翻轉次數。 yaoyao 反轉兩個字元的子串不就是交換兩個字元的位置嗎?這是氣泡排序呀 喵的...

python如何統計乙個字串中各字元的數量?

Shreck Ye 其實因為字符集是已知而且連續的,直接按字元編碼對映到乙個記憶體陣列裡面效率要比字典更高。不過既然是Python,變數都是用字典存的,效率似乎就無所謂了,更重要的是怎麼寫更簡單更快。這裡用字典也更方便簡單,參照高讚答案用collections.Counter一行就可以解決更好。 2...