c語言有五個區:
1.stack:用來存放函式的形參和函式內的區域性變數。由編譯器分配空間,在函式執行完後由編譯器自動釋放。
2.heap:用來存放由動態分配函式(如malloc、new)分配的空間。是由程式設計師自己手動分配的,並且必須由程式設計師使用free釋放。如果忘記用free釋放,會導致所分配的空間一直佔著不放,導致記憶體洩露。
3.靜態儲存區:用來存放全域性變數和靜態變數。存在於程式的整個執行期間,是由編譯器分配和釋放的。
4.文字常量區:例如char *c = 「123456」;則」123456」為文字常量,存放於文字常量區。也由編譯器控制分配和釋放。
char* p = 「hello world1」;
char a = 「hello world2」;
p[2] = 『a』;此處出錯,原因是「hello world1」為文字常量;「hello world2」為區域性變數儲存在stack裡面
a[2] = 『a』;
5.**區:用來存放程式的二進位制**。
c 程式記憶體分配
乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式倒是類...
C程式記憶體分配
在任何程式設計環境及語言中,記憶體管理都十分重要。在目前的計算機系統或嵌入式系統中,記憶體資源仍然是有限的。因此在程式設計中,有效地管理記憶體資源是程式設計師首先考慮的問題。第1節主要介紹記憶體管理基本概念,重點介紹c程式中記憶體的分配,以及c語言編譯後的可執行程式的儲存結構和執行結構,同時還介紹了...
C程式記憶體分配
從作業系統的角度簡單介紹一下程序。程序是占有資源的最小單位,這個資源當然包括記憶體。在現代作業系統中,每個程序所能訪問的記憶體是互相獨立的 一些交換區除外 而程序中的執行緒所以共享程序所分配的記憶體空間。在作業系統的角度來看,程序 程式 資料 pcb 程序控制塊 區 text 用來存放cpu執行的機...