連線:
親身經歷,覺得很奇怪,所以查了下這個問題
struct list ;
我用的是鍊錶,
list* p;
list* pp = head;
for(tint i = 0; i < iindex + ipos - 1; i ++)
}刪除了1000多個,加起來至少得幾百k了吧,可程式占用的記憶體並沒有絲毫的減少,程式退出後記憶體倒是釋放了
回答一:
1.沒看到你對結構體成員進行記憶體分配。
2.記憶體應該有區塊分配/**機制,不到一定的粒度可能看不出變化。
回答二:
malloc申請的記憶體都不是記憶體管理的一等公民.
在win和linux(unix-like)上面,malloc申請的都是堆上的記憶體,而堆是c執行庫向os申請的.
那麼你free的記憶體也就是堆上的,應用占用的記憶體不會有明顯改變,除非到一定程度那個堆被釋放了.
delete是靠free實現的.
回答三:
lz的情況正常,要不容易整理記憶體碎片
那樣的話,效率會很差
系統一般都是以頁為單位分配,便於管理
你申請的位址,系統都有記載,但系統很少回讀這些表內的記憶體現在狀態或者說去整理碎片
所以就會一廂情願認為你delete的內容在使用,
即使他已經被標記了未使用,放在相應的記憶體情況表
但當記憶體不足(或達到一定的情況)時,他就會適當的回讀下,整理下記憶體碎片
(但如果現在情況不會引起記憶體危機,他一般是不會回讀整理記憶體碎片的)
個人觀點
回答四:
等堆被釋放了,占用記憶體大小才會有顯著的變化.
為什麼沒有我要的插座?
我想不通一件事情,為什麼到現在還沒有我想要的插座 乙個usb控制的電源插座,它可以用這樣的語句來從電腦控制開和關 set objlamp createobject plug.lamp objlamp.on true 更多的帶晶元的電器不夠,還要能互相連線的 更進一步,就是為什麼現在在網路上面可以遠端...
那天我為什麼最終沒有跳入長江
那天我為什麼最終沒有跳入長江 陳美玲來到往日熟悉的喧鬧的 交易所,我目之所及是一片慘綠。雖然到處嚷嚷著 該出手時就出手了,丟擲一連串救市的胡蘿蔔,各界對 盈利前景也持樂觀態度,但 走勢卻出乎預期,2008年10 月27日,上證指數衝破 1802 點後,如葛州壩決堤般大踏步下瀉。我不需要一秒鐘等候,就...
為什麼我還沒有成功?
為什麼我沒有成功?阻礙你從業餘選手變成專家的唯一因素就是 專注。天才?如果我們投入足夠的時間並足夠關注,我們都可以一躍 至少接近 成為天才。至少大腦科學家們是這麼說的。最棒的是 這樣做從來都不晚。摘自 程式設計師雜誌 2007年12刊 為什麼我沒有成功?阻礙你從業餘選手變成專家的唯一因素就是 專注。...