1. c++中内存分为两个部分:
- 栈:函数内部声明的所有 变量 都在 栈内存 中。
- 堆:程序中 未使用 的内存,在程序 运行时 用于 动态分配内存。
2. 为什么要使用动态分配内存?
- 以实例化一个类为例:
//第1种:直接定义法 ----->直接将a放入栈区(局部变量,大小受限,自动释放)
A a;
//第2种:动态内存分配法-----> 堆区分配一块内存,用指针a去指向这块内存。(动态内存,大小任意,手动释放)
A* a;
a = new A();
3. 动态分配内存的好处?
- 动态申请空间,能动态确定对象所需要的内存。
想吃盐多少就去买多少
- 对于大型对象的存储,栈区容不下。
我有好多盐,都放家中太占地方。可以放仓库中,记住 仓库地址 就行。
- 传递指针比传递整个对象更高效。
我卖盐,告诉别人我仓库地址,不用把整个仓库搬过去。
总结:
-
new关键字用来进行 动态存储分配 或 运行时储存分配 。值是一个 指针(门牌号)。指向所分配的 地址空间的首地址(房间号)。
-
示例:给一个整数分配存储空间。
// 1.声明整型指针变量 ---做门牌号 int* y; // 2.动态分配存储空间 ---贴门牌号 y = new int; // 3.为 *y 赋值 ---住客人 *y = 10 ; //三步一起走 int* y = new int(10);
- y 是对整数指针的引用。
- *y 是对整数本身的引用。