C++动态分配内存知识点讲解_堆区

int num【3】;
我要申请3个整形长度的空间
在编译阶段就分配内存了
动态分配内存就是用new了

int *ptr_int = new int;

shh

右边是分配一块新的内存,空间大小是一个整形大小的空间

然后把内存的地址 赋给左侧

即变量ptr_int 指向了新的内存空间

C++动态分配内存知识点讲解_堆区_02


new 和delete是成对出现的

记得释放内存

即内存管理

运行到这句话,计算机就会给他分配内存

int *p = new int;

p在栈区
new int 在堆区
p++指针指向下一块内存
没有指针指向的内存叫野指针
或者内存泄漏 (玩着手游突然闪退)

编译时,
int num[56]
运行时,
运行到这句话, 时给了5个整形空间

int *nums = new int[5];

C++动态分配内存知识点讲解_动态分配内存_03


打印的是地址的大小,而不是空间的大小

new的东西在堆内存里面

C++动态分配内存知识点讲解_动态分配内存_04

C++动态分配内存知识点讲解_堆区_05


delete 类似c中的free()

释放内存

动态分配内存,

用多少,new多少

C++动态分配内存知识点讲解_堆区_06


C++动态分配内存知识点讲解_堆区_07


下方是释放数组

C++动态分配内存知识点讲解_堆区_08

C++动态分配内存知识点讲解_动态分配内存_09

好方便啊。。!!

10.2动态分配内存
P64 - 17:52

内存泄漏,就是程序一言不合就崩溃

手机游戏,玩着就直接退出了!

C++动态分配内存知识点讲解_内存泄漏_10

左边在栈区
右边在常量区

左边和右边不是在一个区的
栈区比作男人
真正做事情的还是堆区比作女人

堆区需要自己分配内存

栈区相当于电脑虚拟世界

堆区是现实世界

C++动态分配内存知识点讲解_堆区_11