1. 程式人生 > >c/c++的記憶體四區

c/c++的記憶體四區

記憶體四區的圖示

記憶體四區圖示

記憶體四區的程式碼案例

#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;
}