2016-04-24 177 views
-2

程序分爲4個部分:堆棧,數據,代碼,堆。堆棧和堆之間有什麼區別?

我知道他們每個人都是什麼樣的數據結構(就像在Java中使用的一樣),但是他們在操作系統中的區別(和定義)是什麼?

回答

1

程序分爲4個部分:堆棧,數據,代碼,堆。

這不是一個準確的起點。

一個程序被分成具有各種屬性的程序段。

  • 只讀/不執行(你調用數據)
  • 只讀/執行(你調用的代碼)
  • 讀/寫(這既包括堆和棧)。

堆棧只是一個內存塊,使用push和pop操作分配和釋放。分配和釋放通常使用堆棧指針寄存器實現。

堆是一個或多個內存塊,可以按任何順序和各種大小分配和釋放。操作系統對程序堆沒有任何知識。由代碼鏈接的庫進行管理(儘管操作系統會有自己的堆)。操作系統只是看到這些內存塊。

相關問題