Re: [程式] 記憶體的問題
看板GameDesign (遊戲設計)作者jasonlurey (我要冰生脾酒!!!!)時間18年前 (2007/08/20 15:21)推噓0(0推 0噓 0→)留言0則, 0人參與討論串4/7 (看更多)
※ 引述《moonjustin (快點放長假吧@@)》之銘言:
: 順便問一下,
: 宣告local變數會造成記憶體破碎的問題嗎?
: 另,如果現在跟系統要了一塊記憶體,
: 之後先歸還了一部份記憶體,
: 那麼系統會知道現在這塊free的記憶體在哪裡嗎?
: 謝謝。
我來獻醜 可能有誤
在embedded system中 (PC desktop是不是這樣我不確定)
對C而言 記憶體會分成stack和heap這兩種東西
stack只能push/pop, 通常是用來放local variables
heap可以隨你抽插 (請別西斯), 通常會放static/global variables
------------------------------------------------------------
在離開宣告該變數的function時, Local variable應該就會被幹掉
因為context switch會在跳出function時把整段存在stack中的local variables推出來
但推出來的東西因為沒有存下來, 自然就消失了
所以系統對於local variables的存取和追蹤是用stack和其對應的stack pointer來
------------------------------------------------------------
但若是採用Dynamic allcoation, 如Xalloc, 或new之類的
一般應該是會在Heap中去找空間, 找到後會回一個pointer(你弄丟就找不回來了XD)
這在跳出function時, 若沒有dealloc或delete掉...就會佔Heap空間
所以系統對於static/global variables的存取是用heap中各個區塊的pointer
------------------------------------------------------------
一般的standard library就是在提供stack/heap實現的基本機制
這也是為何大家的程式都要link這些程式庫 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.212.228
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章