嵌入式C进阶笔记 ---内存管理malloc

2019-07-12 21:10发布

一、预备知识程序的内存分配C/C++定义了以下5个内存区间:
  • 代码区存放函数体的二进制代码。
  • 全局变量与静态变量区通常定义变量,编译器在编译时都可以根据该变量的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。程序结束后由系统释放。
  • 文字常量区常量字符串就是放在这里的。 程序结束后由系统释放
  • 局部变量区即栈区由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
  • 动态存储区即堆区一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
二、例子程序  
这是一个前辈写的,非常详细  
//main.cpp  
int a = 0; 全局初始化区  
char *p1; 全局未初始化区  
main()  
{  
int b; 栈  
char s[] = "abc"; 栈  
char *p2; 栈  
char *p3 = "123456"; 123456