嵌入式Linux C编程 03

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);    /*分配的区域在堆区*/
}
相关文章
相关标签/搜索