常量 變數 與 靜態區 棧區 堆區的關係

2021-06-22 20:17:16 字數 558 閱讀 7807

//------由const 修飾的常量分配在棧區,而不是靜態區

int main()

//----說明靜態區儲存的不一定就是常量,也可以是靜態變數,而靜態變數並不是常量

//----而棧區不一定儲存的就一定都是變數,也可是const 常量

//----而堆區都是由malloc分配,由free釋放的

char *s3 = "1234";//堆區----常量

int a = 5;//棧區----------變數

static int b = 3;//堆區----變數

const int c = 8;//棧區--------常量

char ss = "wewe";

const char *s4 = ss+1;//棧區---常量

char *s5 = (char *)malloc(10);//堆區--- 開闢空間

printf(" %p\n %p\n %p\n %p\n %p\n %p\n %p\n",s3,&a,&b,&c,ss,&s4,s5);//s3是字串常量的首位址,&s4 是指標的位址,s5是malloc分配的位址

堆區 棧區 靜態區 常量區還有???

常見的儲存區域可分為 由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個new就要對應乙個delete。如果程式設計師沒有釋放掉,程式會一直占用記憶體,導致記憶體洩漏...

c 棧區 堆區 常量區

c 中棧區 堆區 常量區 由一道面試題目而學習 2009 04 28 21 01 include void main 對應的彙編 10 a c 1 00401067 8a 4d f1 mov cl,byte ptr ebp 0fh 0040106a 88 4d fc mov byte ptr ebp...

C 中棧區 堆區 常量區

c 中棧區 堆區 常量區 由一道面試題目而學習 2009 04 28 21 01 include void main 對應的彙編 10 a c 1 00401067 8a 4d f1 mov cl,byte ptr ebp 0fh 0040106a 88 4d fc mov byte ptr ebp...