在 C/C++ 程序中,内存被操作系统和编译器划分为不同的区域,以便高效地管理数据和指令的生命周期。通常,C++ 程序的内存分区主要分为 5 大区域:栈区、堆区、全局/静态存储区、常量区、代码区。 下面为您详细拆解这 5 个区域的作用、特点和生命周期: --- 1. 栈区 (Stack) 存储内容:函数的局部变量(包括 函数)、函数参数、返回地址、以及局部对象等。 管理方式:由编译器自动分配和释放,程序员无需干预。 生命周期:随着所处作用域(如函数被调用)的进入而分配,随着作用域的结束(如函数返回)而自动销毁。 特点: 效率极高:分配运算内置于处理器的指令集中,速度快。 空间有限:栈的空间通常较小(例如 Windows 默认 1MB,Linux 默认 8MB),如果申请的空间过大或者递归过深,会导致 栈溢出 (Stack Overflow)。 分配方向:通常是向下生长(从高地址向低地址扩展)。 数据结构:遵循“后进先出”(LIFO)原则。 2. 堆区 (Heap) 存储内容:程序运行期间动态分配的内存(即通过 、 分配的对象或数组)。 管理方式:由程序员手动控制。C++ 中使用 ...