堆 棧的位址高低? 棧的增長方向?

時間 2021-05-31 20:36:12

1樓:

結論:每套ISA/OS實現各不同

IA32/Linux範例:https://www.

cs.cmu.edu/~410/lectures/L02_Stack.pdf

有圖有真相:

參考教材:Operating System Concepts總結:思而不學則狗帶,閉上嘴開啟書,求真求實請參考學術界認可出版物,看玩具書還認真你就輸了。

補充:OS層之上位址均virtual memory,與實體地址無關,無高低可比性。不理解VM者請回大一補習。

2樓:邁步從頭越

棧確實是從高位址向低位址分配的,但你這裡在方法內部看a1[0]位址小於a[1]的原因是編譯器會在進入方法前提前計算好方法需要分配的棧空間大小,預先分配好,然後在方法內按陣列自然的順序從低到高分配位址。

3樓:漆鵬

可能只是個實現問題?

linux0.11裡面程序的程序控塊pcb跟程序的核心棧stack是在一起放在task_union裡

task_struct占用了低位址 stack只能在高位址了然後就沿襲下來了

計算機中的堆位址從低到高向上增長,但棧位址卻從高到低向下增長,為什麼這樣設計,這樣設計有什麼好處?

我的理解是,入棧從高位址向低位址增長,這是資料的儲存階段 出棧是從地位址向高位址進行的,這是資料的讀取階段。從資料訪問這個層次來看,堆和棧都是從低位址開始的,沒什麼不同,也比較符合常理。 浮生 正好看到Cortex M3的相關文件,在Cortex M3中,堆和棧就是這麼設計的。這樣設計的目的是當棧不...

遞迴函式的堆疊操作

白駒憶 最近忽然get到鎮海角好美,超適合情侶去待一整天。自駕的話,距離廈門1個多小時車程。藏著乙個住在日月星海浬的海島,一路延伸,鑽入大海,三面環海,背靠青山。那裡有2座燈塔,一新一舊,這裡也是東海和南海的分界線。太平洋的風穿過布滿細縫的烏雲,吹向繾綣的浪花,越過崖下的海與礁,拂過那座永恆不滅的孤...

Linux 線性位址,邏輯位址和虛擬位址的關係?

菜鳥程式設計師 根據大學作業系統教材講的 如果是沒有使用虛擬記憶體的頁式 段式系統,沒有虛擬位址這一說法,邏輯位址一定直接可以轉換為實體地址,因為程序都在記憶體中儲存。如果是使用了虛擬記憶體的頁式 段式系統,就有虛擬位址了,因為不一定在記憶體中儲存,得到的程序位址不一定能在記憶體上找到,因為頁表上對...