c語言之棧儲存區和堆區理解

2021-07-06 03:28:20 字數 523 閱讀 7253

棧:就是遲到早退、先進後出;記憶體的分配、釋放管理都是由系統自己完成,不需要自己管理;

堆:是由自己動態申請的,如果不釋放,會一直存在的;申請記憶體的時候會用到關鍵字mallco

下面是乙個堆的申請返回和棧的記憶體分配返回  可以看出它們的生命週期和記憶體管理機制

//手動申請記憶體空間 這是儲存與堆中的

char* getmalloc(int num)

//返回申請的位址 然後析構p1 棧中不會存在p1,自動釋放

return p1;

}char* getstatck()

int _tmain(int argc, _tchar* argv)

//向tmp所指向的記憶體空間寫入資料,也就是給申請的記憶體空間中寫入資料

strcpy(tmp, "rose_grils");

//呼叫棧中記憶體的返回值 由於是區域性臨時變數 返回會存在問題

tmp = getstatck();

return 0;

}

靜態儲存區 堆區和棧區

記憶體分配有三種 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。它主要存放靜態資料 全域性資料和常量。棧區 在執行函式時,函式 包括main函式 內區域性變數的儲存單元都可以在棧上建立,函式執行結束時...

C 靜態儲存區 棧區和堆區的區別

學習c 如果不了解記憶體分配是一件非常可悲的事情。而且,可以這樣講,乙個c 程式設計師無法掌握記憶體 無法了解記憶體,是不能夠成為乙個合格的c 程式設計師的。一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存...

堆區和棧區

1 棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由系統 3 全域性區 靜態區static 全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域,未初始化的全域性變...