title: C++指针、引用与内存模型
tags:
- module
- cpp
- pointer
- memory
- joplin
type: module
source_type: reconstructed
created: 2026-04-22
updated: 2026-04-22
---
C++指针、引用与内存模型
[!abstract]
这一模块是 C++ 区别于很多高级语言的关键。重点不是把语法记熟,而是理解地址、生命周期、所有权和内存区域的关系。
模块结论
- [[C++指针]] 提供直接处理地址和间接访问内存的能力。
- [[C++引用]] 是别名机制,常用于参数传递和返回值设计。
- [[C++内存模型]] 决定了对象和数据位于哪里、活多久、谁负责释放。
一、指针是什么
- 指针变量存放地址。
- 解引用可以访问对应内存。
- 指针让程序员直接面对内存布局和生命周期。
高频内容
- 空指针与野指针
const 修饰指针
- 指针与数组
- 指针与函数参数
二、引用是什么
- 引用本质上是已存在对象的别名。
- 必须初始化,且不能重新绑定到另一对象。
- 它在语义上比裸指针更“像对象本身”。
为什么引用重要
- 可替代一部分指针参数写法。
- 支撑函数重载、返回值优化相关设计。
- 是理解现代 C++ 接口风格的重要基础。
三、内存四区模型
复习重点
- 栈区由编译器自动管理。
- 堆区通常由程序员通过
new/delete 管理。
- 局部变量地址不能随意返回,是生命周期问题而不是语法问题。
四、new 与 delete
new 在堆区申请空间并返回指针。
delete / delete[] 负责释放。
- 这直接牵涉资源管理和内存泄漏问题。
五、易错点
- 指针存的是地址,不是值本身。
- 空指针、野指针不能随意解引用。
- 引用不是“更安全的指针语法糖”这么简单,它有独立语义边界。
delete 与 delete[] 不能混用。
六、复习提问
- 指针和引用的核心区别是什么?
- 为什么不能返回局部变量地址?
- 栈区和堆区分别适合承载什么生命周期的数据?
来源
- [[raw/Joplin/编程学习项目/C++学习笔记/1. C++基础/7. 指针.md]]
- [[raw/Joplin/编程学习项目/C++学习笔记/2. C++核心编程/1. 内存分区模型.md]]
- [[raw/Joplin/编程学习项目/C++学习笔记/2. C++核心编程/2. 引用.md]]
相关页面
- [[C++]]
- [[C++引用]]
- [[C++指针]]
- [[C++内存模型]]
- [[C++智能指针]]