由编译器自动分配释放 ,存放函数的参数值,局部变量的值等
一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回
主要包括静态全局区和常量区
存放函数体的二进制代码。用于存储程序编译连接后生成的二进制机器码指令的内存区域
int add(int x, int y);
int sub(int x, int y);
int main() {
int c = 30;
int d[10];
int *p=malloc(sizeof(int)*2);
int *p1=malloc(sizeof(int));
printf("-----static--------\n");
printf("%x\n", &a);
printf("%x\n", &b);
printf("------stack-------\n");
printf("%x\n", &c);
printf("%x\n", &d);
printf("%x\n", &p);
printf("%x\n", &p1);
add(a,b);
sub(b,c);
printf("------heap-------\n");
printf("%x\n", p);
printf("%x\n", p1);
printf("------code-------\n");
printf("%x\n", add);
printf("%x\n", sub);
}
int add(int x, int y) {
printf("%x\n", &x);
printf("%x\n", &y);
return x + y;
}
int sub(int x, int y) {
printf("%x\n", &x);
printf("%x\n", &y);
return x - y;
}
-----static--------
405008
40500c
------stack-------
28ff3c
28ff14
28ff10
28ff0c
28fef0
28fef4
28fef0
28fef4
------heap-------
4629f0
462a00
------code-------
401933
401969