ARM嵌入式学习 C程序运行时内存分配
发布时间
阅读量:
阅读量
计算机程序在运行过程中,其内存空间通常被划分为两个主要区域:用于存储程序指令的代码段,以及用于保存数据信息的数据段。
其中,代码段主要承担用户所编写的程序逻辑的存储功能;而数据段则进一步细分为两个子区域,即用于动态内存分配的堆和用于函数调用时临时存储的栈。

在Linux操作系统中,数据段新增了全局初始化数据区(initialized data segment/data segment),用于存储程序中被明确初始化的全局变量、静态变量(涵盖全局和局部静态变量)以及常量(如字符串)等信息。
栈:英文称为stack,是由编译器自动分配与释放的内存区域,主要用于存储函数调用时的参数和局部变量。通过函数调用与栈结构的配合,能够确保不同函数中定义的同名变量不会发生冲突。栈的管理机制遵循FILO(First In Last Out)原则,即“先进后出”。
堆:英文名称为heap,通常处于bss段与栈之间,用于实现动态内存分配。该区域由程序员自行管理,其内存使用需通过操作系统提供的相关函数进行申请与释放。
内存管理函数:malloc() 和
全部评论 (0)
还没有任何评论哟~
