详细参见: csdn:http://blog.csdn.net/chenyiming_1990/article/details/9476181
开源中国:http://my.oschina.net/pollybl1255/blog/140323
#include <stdlib.h>
#include <stdio.h>
/*常量*/
const int ca = 10 ;//全局常量 data区
static sa;//静态,data区
int a;//全局未初始化 bss 区
int b = 4;//全局初始化 data区
/*常量*/
const int ca = 10 ;//全局常量 data区
void func1(); //子函数,代码区
void func2();//子函数,代码区
int main(void)
{
/*申请一块内存 堆*/
int *p = NULL;//栈
p = (int *)malloc(sizeof(int));
*p = 5;
char *p1 = "hello world";//data区
char p2[] = "hello world";//栈区
/*局部变量*/
int aa;
/*栈区*/
printf("***********栈区************\n");
printf("局部变量:%p\n",&aa);
aa = 5;
printf("局部变量:%p\n",aa);
printf("p2:%p\n",p2);
printf("\n\n");
/*堆区*/
printf("*********堆区**************:\n");
printf("动态内存区:%p\n",&p);
printf("动态内存区:%p\n",p);
/*非初始化数据段*/
printf("\n\n");
printf("*********bss 区************:\n");
printf("非初始化全局变量:%p\n",&a);
printf("\n\n");
/*只读区*/
printf("********only read 只读区********\n");
printf("data 段:\n");
printf("全局初始化变量:%p\n",&b);
printf("p1:%p\n",p1);
printf("常量:%p\n",&ca);
printf("静态变量:%p\n",&sa);
printf("\n\n");
printf("代码段:\nmain地址:%p\n",main);
printf("子函数2:%p\n",func2);
printf("子函数1:%p\n",func1);
}
void func1()
{
printf("子函数\n");
}
void func2()
{
printf("子函数\n");
}
结果:
***********栈区************
局部变量:0xbfca4bb8
局部变量:0x5
p2:0xbfca4bbc
*********堆区**************:
动态内存区:0xbfca4bc8
动态内存区:0x9c34008
*********bss 区************:
非初始化全局变量:0x8049a00
********only read 只读区********
data 段:
全局初始化变量:0x80499f0
p1:0x80486e8
常量:0x80486e4
静态变量:0x80499fc
代码段:
main地址:0x8048424
子函数2:0x804860a
子函数1:0x80485f6
附上图片,转载自:http://my.oschina.net/pollybl1255/blog/140323
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmL3ADOBJWWsRWYRNGRBF0dJR1MRJHVBJVVx02bpt0dvwlNC9CXCVzLcBDMN9CXyAzcml3dvwVbvNmLvR3YxUjLzM3Lc9CX6MHc0RHaiojIsJye.jpg)
转载于:https://blog.51cto.com/wonderwander/1623779