在面對x86彙編,arm,還有各種語言的書籍上都遇到過這3個名詞,那麼這些的區別與相同之處在於什麼呢?為了理解,我簡單的談談相關概念堆其實按照功能應該分為 棧、靜態區以及堆
動態申請的資料是存放在堆中的,堆是由作業系統管理的一片空間,事先是沒有準備好的,在進行申請之後作業系統進行了分配,如果在分配前使用了這段空間會出現記憶體錯誤。一般在使用之後也需要程式設計師手動去釋放。
例如在c中的malloc和free就是堆相關的。
靜態區全域性變數一般存放在可讀可寫的一段空間中,該空間是由編譯器決定的固定的空間。
棧棧通俗點說是由暫存器ebp和esp指向的乙個空間。用於存放臨時的資料。符合先進後出原則。適用於函式的臨時變數以及返回值。
靜態儲存區 堆 棧之間的區別
一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。它主要存放靜態資料 全域性資料和常量。棧區 在執行函式時,函式內區域性變數的儲存單元都可以在...
靜態儲存區 堆 棧之間的區別
一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。它主要存放靜態資料 全域性資料和常量。棧區 在執行函式時,函式內區域性變數的儲存單元都可以在...
靜態儲存區 堆 棧之間的區別
一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。它主要存放靜態資料 全域性資料和常量。棧區 在執行函式時,函式內區域性變數的儲存單元都可以在...