3.2.1、C语言程序所占内存分类
- 栈(stack):由编译器自动分配释放,存放函数的参数值、局部变量的值、返回地址等
- 堆(heap):一般由程序员动态分配(调用malloc()函数)和释放(调用free()函数)
- 数据段(data):存放的是全局变量、静态变量、常数。根据存放的数据,又可分为
- 普通数据段(可读可写/只读数据段,存放静态初始化的全局变量或常量)
- BSS数据段(存放未初始化的全局变量)
- 代码段(code):用于存放程序代码
/*C语言中数据的内存分配*/int a = 0; /*可读可写数据段*/char *p1 /*BSS段*/void main(){ int b; /*b在栈*/ char s[] = "sbc"; /*s在栈,“abc”在常量区*/ char *p2; /*ps在栈*/ static int c = 0; /*可读可写数据段*/ p1 = (char *) malloc(10); /*分配的区域在堆区*/}