1. 程式人生 > >C++記憶體分佈

C++記憶體分佈

一個由 C/C++ 編譯的程式佔用的記憶體分為以下幾個部分 ,

  • 棧(stack)
    由編譯器自動分配釋放 ,存放為執行函式而分配的區域性變數、函式引數、返回資料、返回地址等,其操作方式類似於資料結構中的棧
    由編譯器在需要的時候分配,在不需要的時候自動清除。
    在一個程序中,位於使用者虛擬地址空間頂部的是使用者棧,編譯器用它來實現函式的呼叫。

  • 堆(heap)
    一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由作業系統回收 ,分配方式類似於連結串列。

  • 全域性/靜態儲存區(static)
    存放全域性變數、靜態資料、常量,程式結束後由系統釋放

  • 文字常量區


    常量字串就是放在這裡的。 程式結束後由系統釋放。

  • 程式程式碼區
    存放函式體(類成員函式和全域性函式)的二進位制程式碼。