1、程式中的棧
注:1、棧:就是一種後進先出的行為
2、在這裡要注意由於在intel系統中棧是向下生長的(棧越擴大其值越小,堆恰好相反)
第二個程式裡面 pointer指向的記憶體已經被釋放了,變成了野指標。
但是我覺得還有原因在於你想返回區域性變數的位址。如果沒進行函式呼叫,用一下歷史資料也是可以的,就像第乙個程式,把值賦給了別人,期間沒有發生函式呼叫,於是雖然有野指標,但是資料也是對的。但是第二個程式錯誤在於執行 printf 函式相當於進行了函式呼叫,此時記憶體裡面的資料被銷毀了。
2、程式中的堆(malloc)
3、程式中的靜態儲存區
#include int g_v = 1; //全域性變數
static int g_vs = 2; //static修飾的全域性變數,不能被外部檔案訪問
結論:從得出的結果我們可以看出,全域性變數,static修飾的全域性變數和static修飾的區域性變數都儲存在同乙個地方,也就是程式的靜態儲存區,記憶體位址都是相鄰的。
4、小結
程式中的三國天下
在c語言中主要運用的涉及到3個區 棧 主要用於函式的呼叫和自動變數的儲存。由於棧的內部機制決定了棧中的內容,當乙個函式呼叫完畢,區域性變數就不再存在。堆 主要用於動態記憶體分配。堆的分配是在記憶體中有很大的一段空閒鍊錶用於存放堆的內容。當使用了動態分配的時候,系統會自動查詢適合的空閒鍊錶,查詢到之後...
程式中的三國天下
舉例 多個盤子,最底部的盤子 1.棧在程式中用於維護函式呼叫上下文,沒有棧就沒有函式,沒有區域性變數 特點 後進先出 棧儲存了乙個函式呼叫所需的維護資訊 1.函式引數,函式返回位址 2.區域性變數 3.函式呼叫上下文 分析函式呼叫過程。為什麼有了棧還需要堆?棧上的資料在函式返回後就會被釋放掉,無法傳...
三國殺的理解
11 人生就像一局三國殺。有可能你還沒判斷出誰是好人誰是壞人你就掛了。12 人生就像一局三國殺。你對別人好,別人不一定對你好。13 人生就像一局三國殺。你要在這個世界生存有時需要偽裝。14 人生就像一局三國殺。你可能來這個世界只是來打醬油的。15 人生就像一局三國殺。有可能一出生就已經決定了你的身份...