C++内存管理机制

本文详细介绍了C++内存管理的五个区域:堆、栈、静态存储区、常量存储区和代码区。堆用于动态内存分配,由程序员负责释放;栈存放局部变量,由编译器自动管理;静态存储区包含全局变量和静态变量;常量区存储字符串常量;代码区存放函数代码。理解这些区域对于避免内存泄漏和优化程序性能至关重要。

1. C++内存管理机制

在C++中内存分为5个区,分别是自由存储区全局/静态存储区常量存储区

  • **堆(heap):**分配方式类似于链表;一般由程序员分配和释放,若程序员不释放,OS可能回收。分配方法:malloc、new ;释放方法:free delete

  • **栈(heap):**编译器自动分配释放,存放函数参数值、局部变量的值。操作方式类似于:数据结构的栈。 进程的每个线程都有私有的栈

使用 new 和 delete时, 内存在堆中分配。堆内存空间必须通过 delete 完全释放,以防止内存泄漏。只要不delete,分配在堆上的对象可以一直存活下去。

栈是系统自动分配管理的,局部变量就是来自于栈区,只要超出了作用域的栈区数据就会被自动回收。

  • **全局/静态存储区(static):**全局变量和静态变量的存储位置,由系统分配和释放。初始化的存放于.data,未初始化的在.bss。 默认初始化为0

  • **常量区(文字常量区):**存放常量字符串,存放于.rodata, 程序结束后有系统释放。

  • **程序代码区:**存放函数体的二进制代码(.text)

堆栈 存放本地变量 即局部变量。在堆栈中,程序通过堆栈的基址和偏移量来访问本地变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值