內存四區模型


  變量的生命周期是怎么管理的?

一 內存四區

C/C++程序占用的內存分為四個區: 棧區,堆區,數據區,代碼區。

  1 棧區

  存放函數的參數值,局部變量的值等。如 int a;  int *p;  這兒的a和p都存放在棧中

  由編譯器自動分配釋放。

  2 堆區

  存放由程序員動態申請的變量。(malloc, new等)

  由程序員手動分配/釋放。若程序員不釋放,程序結束時可能由操作系統回收。

  3 數據區 (包含常量區和全局區)

  ①常量區:存放常量。 包含字符串常量和其他常量。 char *p = "I love u";  指針p指向的這塊內存屬於常量區

  ②全局區/靜態區:存放全局變量和靜態變量。初始化的全局變量和靜態變量在一塊區域,未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域。

   數據區在程序結束后由操作系統釋放

  4 代碼區

  存放程序的二進制代碼。

  int a; //申請棧區內存

  a = 4; //指向的代碼,放在代碼區

 

二 內存四區的建立流程

 1 雙擊運行程序時,操作系統把硬盤上的程序load到內存。

 2 操作系統把c代碼分成四個區。

   3 操作系統找到入口函數main,開始執行。流程圖如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM