【C++】内存分区

C++ 内存分区学习笔记

1. 栈区(Stack)

  • 作用:用于存储函数的局部变量、函数参数和函数调用信息。
  • 特点:分配和释放由编译器自动管理,遵循“后进先出”的原则。
  • 生命周期:在函数调用时分配内存,在函数返回时自动释放。

示例代码

void foo() {
    int x = 5; // x 在栈上分配内存
} // 函数返回时,x 在栈上自动释放内存

2. 堆区(Heap)

  • 作用:用于动态分配内存,存储程序运行期间动态创建的对象和数据。
  • 特点:分配和释放由程序员手动管理,需要使用 newdelete 关键字。
  • 生命周期:需要手动分配和释放内存,直到调用 delete 手动释放内存。

示例代码

int* ptr = new int; // 在堆上分配内存
*ptr = 10;
delete ptr; // 释放堆上的内存

3. 全局区/静态区(Static/Data)

  • 作用:用于存储全局变量、静态变量和常量。
  • 特点:在程序运行期间始终存在,直到程序结束才释放。
  • 生命周期:全局变量和静态变量在程序启动时分配内存,直到程序结束时才释放。

示例代码

int globalVariable; // 全局变量,在全局区分配内存
static int staticVariable; // 静态变量,在全局区分配内存
const int constantValue = 100; // 常量,在全局区分配内存

4. 文字常量区(Text/Code)

  • 作用:存储程序的代码段,包括函数体、常量字符串等。
  • 特点:只读,存储程序的执行代码。
  • 生命周期:程序启动时分配内存,直到程序结束才释放。

示例代码

void func() {
    const char* message = "Hello"; // 常量字符串在文字常量区
}

通过理解这些内存分区的特点和用法,我们可以更好地管理程序的内存,并避免内存泄漏和不必要的内存浪费。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值