乙個c++程式設計占用的記憶體分為以下幾個部分:
(1)棧區 ( stack ):由編譯器自動分配、釋放,存放函式的引數值,區域性變數值。操作方式類似資料結構中的stack。
(2)堆區 ( heap ):一般由程式設計師分配、釋放。如果程式設計師未釋放,一般由os在程式結束時**。同資料結構中的堆不同,分配方式類似鍊錶。
(3)靜態區 ( static ):全域性變數和靜態變數儲存在一起。 程式結束後系統自動釋放。
(4)文字常量區:常量字串存放區。程式結束後系統自動釋放。
(5)程式**區:存放程式函式binary codes。
由前輩寫的幫助理解的程式如下:
int a = 0 ; // 全域性初始化區
char *p1; // 全域性未初始化區
int main()
int b ; // 棧
char s = "abc"; // 棧
char *p2; // 棧
char *p3 = "123456"; //123456在常量區,p3在棧
static int c = 0 ; //全域性初始化區
p1 = (char*)malloc(10); //堆
p2 = (char*)malloc(20); //堆
strcpy(p1,"123456"); //123456在常量區
return 0;
C 程式中關於堆疊程式的簡單理解
include stack.h stack stack create an empty stack bool stack isempty const bool stack isfull const bool stack push const item item else return false b...
C 中堆,棧,佇列
c c 記憶體分為五個部分 1 棧區 stack 存放函式的引數值,區域性變數的值等 編譯器自動分配釋放 2 堆區 heap 注意 與資料結構中的堆完全不同,分配方式類似於鍊錶 程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 3 全域性區 靜態區 全域性變數和靜態變數儲存在一塊,初始化...
程式中關於堆疊大小的劃定
昨天在做 小豬登山 的題目碰到了陣列容量太大的問題,今天做乙個總結。首先,參考了slyar的文章 c語言 全域性變數和區域性變數的大小限制 直接貼上。include int main 編譯執行後發現溢位錯誤。include int a 1000000 全域性變數 int main 編譯執行後正常。在...