C++ 指针与堆内存管理全解析
1. 指针的常见用途
指针在编程中有着广泛的应用,主要用于以下三个方面:
- 管理堆上的数据
- 访问类的成员数据和函数
- 通过引用将变量传递给函数
2. 内存区域划分
程序员通常会与五个内存区域打交道:
| 内存区域 | 说明 |
| ---- | ---- |
| 全局命名空间 | 存储全局变量 |
| 堆 | 可动态分配内存的区域 |
| 寄存器 | 用于内部管理功能,如跟踪栈顶和指令指针 |
| 代码空间 | 存放代码 |
| 栈 | 存储局部变量和函数参数 |
局部变量和函数参数存放在栈上,代码位于代码空间,全局变量在全局命名空间。栈在函数返回时会自动清理,局部变量会超出作用域并被移除。而堆在程序结束前不会自动清理,需要程序员手动释放不再使用的内存。
3. 堆内存的特点与优势
堆可以看作是一个巨大的内存区域,有许多按顺序编号的小格子等待存储数据。与栈不同,不能直接给这些小格子标记名称,需要获取所预留小格子的地址,并将其存储在指针中。
堆内存的优势在于:
- 所预留的内存直到显式释放前都可用。即使在函数中预留了堆内存,函数返回后该内存仍然可用。
- 与使用全局变量相比,只有能访问指针的函数才能访问数据,提供了对数据的严格控制接口,避免一个函数意外修改数据。
4. 使用 new 关键字分配堆内存
在 C++ 中,使用 new 关键字后
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



