C語言動態陣列忘記free了對電腦有什麼損害?

時間 2021-05-29 22:48:35

1樓:燕歸

普通情況下是沒有損害的,因為系統和使用者使用的記憶體是分割的。

大部分情況下記憶體是夠用的,你如果申請了太大的記憶體會造成電腦執行記憶體變小,出現卡頓的情況。

2樓:

如果你是乙個小程式,執行完就退出的話,記憶體會自動釋放的。

但是如果是大專案,用完不退出不釋放的話有兩個可能:

1.你的程式是32位的,那麼你的程式實際執行時不會占用太多記憶體(理論4g?我vs裡實測是2g)

2.你的程式是64位的,那麼程式會一直malloc/calloc申請記憶體,把你電腦記憶體申請爆,有多少用多少。在實際執行時記憶體占用到達98%以後就基本穩定不動了。

總之,作業系統對記憶體管理優化好的話,應該沒什麼損害

3樓:「已登出」

現代的作業系統的虛擬記憶體會在乙個程序結束後把所有的分配的記憶體頁返回記憶體池,所以如果乙個程式很快就結束沒有任何問題。但是乙個程式要在後台工作很久時間的話,它會消耗越來越多的物理記憶體,最後就是電腦沒有新的記憶體去給,只能用硬碟swap記憶體,會使電腦工作地很慢。

4樓:Artorias

不會有損害,頂多宕機,關機重啟就好了。另外只要你的程式不是常駐的,或者會短時間內malloc大量記憶體,啥事都沒有。但不free不是好習慣,真的寫大型程式的時候,很容易記憶體爆了。

C語言free 函式是如何釋放指標的?

Reclair 堆記憶體通過移動乙個指標動態擴容。被分配的記憶體和未分配的記憶體的分布是雜合在一起的,經典處理方法是在每一塊已分配 或未分配 的記憶體區塊首部填寫一些相關資訊,例如當前塊是否正在使用 塊的長度 下一塊的位址等等,構成乙個鍊表,malloc 和 free 利用這些頭部資訊在資料塊之間跳...

c 裡如何理解vector是動態陣列,而這個單詞本義是向量?為什麼這麼叫?

d41d8c 對於 動態陣列 最合適的名字大概是dynarray,可惜當年發明STL的時候,dynarray這名字已經被佔了 http www.open std.org jtc1 sc22 wg21 docs wp html sep94 lib containers.html 所以STL的作者沒辦法...

c語言int陣列變數,通過scanf迴圈賦值,輸入3 5,自動執行,所有數值為3,請問為什麼?

悽臨雨 目前除了本答案,其他兩個答案全有錯 關鍵在於 d不接受 遇到.後scanf直接返回0表示讀取失敗,且 留在輸入緩衝區中,下一次迴圈繼續出錯。如何處理?1.用double變數 lf 給scanf。2.保證你的輸入正確,因此程式無需修改 3.先讀取一整行 字串 再從一行裡進一步讀取。includ...