3.2.一、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); /*分配的区域在堆区*/
}