在c語言中主要運用的涉及到3個區
棧:主要用於函式的呼叫和自動變數的儲存。由於棧的內部機制決定了棧中的內容,當乙個函式呼叫完畢,區域性變數就不再存在。
堆:主要用於動態記憶體分配。堆的分配是在記憶體中有很大的一段空閒鍊錶用於存放堆的內容。當使用了動態分配的時候,系統會自動查詢適合的空閒鍊錶,查詢到之後,會把這個鍊錶的首元素的位址傳送給程式,並且把這個鍊錶從空閒鍊錶中剔除出來。當使用完畢之後,要手動的釋放這段空間,否則的話,記憶體會越用越少,直到使用完畢。
靜態儲存區:主要用於存放全域性變數,和靜態變數。和自動變數的儲存區域不同,由於是存放在靜態儲存區,所以它們的值是不會在使用完釋放的,只有當程式結束,才會釋放。
程式中的三國天下
舉例 多個盤子,最底部的盤子 1.棧在程式中用於維護函式呼叫上下文,沒有棧就沒有函式,沒有區域性變數 特點 後進先出 棧儲存了乙個函式呼叫所需的維護資訊 1.函式引數,函式返回位址 2.區域性變數 3.函式呼叫上下文 分析函式呼叫過程。為什麼有了棧還需要堆?棧上的資料在函式返回後就會被釋放掉,無法傳...
38 程式中的三國天下
1 程式中的棧 注 1 棧 就是一種後進先出的行為 2 在這裡要注意由於在intel系統中棧是向下生長的 棧越擴大其值越小,堆恰好相反 第二個程式裡面 pointer指向的記憶體已經被釋放了,變成了野指標。但是我覺得還有原因在於你想返回區域性變數的位址。如果沒進行函式呼叫,用一下歷史資料也是可以的,...
nefu 三國之戰
三國之戰 time limit 1000 memory limit 65536 description 在三國某某戰爭中,魏軍要圍攻蜀國.諸葛亮親自指揮戰爭,對抗曹操。現假設諸葛亮有n個大炮,每個大炮都有乙個攻擊值ai ai 0 ai 100 而且他有乙個神奇的技能,就是他能指定任意區間的大炮,使他...