作者jasonlurey (我要冰生脾酒!!!!)
看板GameDesign
标题Re: [程式] 记忆体的问题
时间Mon Aug 20 15:21:11 2007
※ 引述《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