type
date
status
slug
summary
tags
category
icon
password
网址
new 申请空间
delete 将空间还系统

内核:操作系统
栈区:函数的形参,非静态的局部变量,函数现场保护数据等等,栈是向下增长的。
共享库的内存映射区域:用于装载一个共享的动态内存库。用户可使用系统接口创建共享内存,做进程间通信。
堆区:用于程序运行时动态内存分配,堆是可以上增长的。
数据段:存储全局数据和静态数据,分为.bss 和.data 。
代码段: 可执行的程序(机器指令)和 常量数据。
new:
运算符(关键字):申请空间 – 一个
– 一组
- 计算类型字节大小(自动);
- 调用malloc从堆区申请…(整型)空间;
- 用()内初始化空间;
- 将申请空间地址给指针P.
函数
定位符–对地址空间再次进行构建

delete:
将P所指空间“还”给系统.

内存泄漏
- 申请空间后地址丢失;
- 程序运行中不断从堆区获取空间,致使堆空间耗损完,进而程序崩溃。
C++的动态内存管理:
1.new 运算符的使用
2.new 的函数方式的使用
3.定位new
4 对于内置类型 new / delete / malloc/free 可以混用
区别:
1、 new/delete 是C++中的运算符。 malloc / free 是函数。
2、 malloc申请内存空间时,手动计算所需大小,new只需类型名,自动计算大小;
3、 malloc申请的内存空间不会初始化,new可以初始化;
4、 malloc的返回值为void*, 接收时必须强转,new不需要;
5、 malloc申请内存空间失败时,返回的是NULL,使用时必须判空;
new申请内存空间失败时抛出异常,所以要有捕获异常处理程序;