c/c++的記憶體四區
阿新 • • 發佈:2018-12-14
記憶體四區的圖示
記憶體四區的程式碼案例
#include <stdio.h> void fun() { static int k = 10; //初始化的靜態區域性變數(data區的rw段) static int kk; //未初始化靜態區域性變數(data區的bss段) 預設初始化為0 printf("data: static= %p(rw),%p(bss)\n", &k, &kk); } int g_int1, g_int2; //未初始化全域性變數(data區bss段) int g_int3 = 10; //初始化的全域性變數(data區rw段) char *g_pstr1 = "abc"; //g_pstr1 初始化的全域性變數(data區rw段) //"abc" 字串常量(data區常量區) int main() { printf("data: global= %p(bss),%p(bss)\n", &g_int1, &g_int2); printf("data: global= %p(rw)\n", &g_int3); printf("data: global= %p(rw)\n", &g_pstr1); printf("data:p_str1指向的地址:%p(常量段)\n", g_pstr1); printf("data: abc: %p(常量段)\n", &"abc"); printf("code: fun= %p(code)\n", fun); fun(); int i = 10, j = 20; //棧區 printf("棧區: %p(棧區),%p(棧區)\n", &i, &j); int *pi = new int(10); //pi在棧區,pi指向的內容(*pi)在堆區 printf("堆區: pi %p(堆區)\n", pi); delete pi; return 0; }