11、C++ 指针与堆内存管理全解析

C++ 指针与堆内存管理全解析

1. 指针的常见用途

指针在编程中有着广泛的应用,主要用于以下三个方面:
- 管理堆上的数据
- 访问类的成员数据和函数
- 通过引用将变量传递给函数

2. 内存区域划分

程序员通常会与五个内存区域打交道:
| 内存区域 | 说明 |
| ---- | ---- |
| 全局命名空间 | 存储全局变量 |
| 堆 | 可动态分配内存的区域 |
| 寄存器 | 用于内部管理功能,如跟踪栈顶和指令指针 |
| 代码空间 | 存放代码 |
| 栈 | 存储局部变量和函数参数 |

局部变量和函数参数存放在栈上,代码位于代码空间,全局变量在全局命名空间。栈在函数返回时会自动清理,局部变量会超出作用域并被移除。而堆在程序结束前不会自动清理,需要程序员手动释放不再使用的内存。

3. 堆内存的特点与优势

堆可以看作是一个巨大的内存区域,有许多按顺序编号的小格子等待存储数据。与栈不同,不能直接给这些小格子标记名称,需要获取所预留小格子的地址,并将其存储在指针中。

堆内存的优势在于:
- 所预留的内存直到显式释放前都可用。即使在函数中预留了堆内存,函数返回后该内存仍然可用。
- 与使用全局变量相比,只有能访问指针的函数才能访问数据,提供了对数据的严格控制接口,避免一个函数意外修改数据。

4. 使用 new 关键字分配堆内存

在 C++ 中,使用 new 关键字后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值