C语言的内存分配方式

C语言中内存分配方式有三种: 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序运行期间一直存在。例如全局变量,静态变量。从栈上分配。在执行

C语言中内存分配方式有三种:

  1. 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序运行期间一直存在。例如全局变量,静态变量。
  2. 从栈上分配。在执行函数时,函数内部变量的存储单元都在栈上分配空间,函数执行结束时自动释放这部分空间。
  3. 从堆上分配,也叫做动态内存分配。程序在运行时用malloc或new申请任意多的内存,程序员需要手动free或delete释放内存。

程序运行时的内存空间:

  1. 栈区:由编译器自动分配释放,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。
  2. 堆区:由程序员分配和释放。
  3. 全局区(静态区):存放全局变量、静态数据、常量。程序结束后由操作系统释放空间。
  4. 文字常量区:存储常量字符串。
  5. 程序代码区:存放二进制代码。