Re: [程式] 記憶體的問題

看板GameDesign (遊戲設計)作者 (我要冰生脾酒!!!!)時間18年前 (2007/08/20 15:21), 編輯推噓0(000)
留言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
文章代碼(AID): #16oK3edy (GameDesign)
討論串 (同標題文章)
文章代碼(AID): #16oK3edy (GameDesign)