type
date
status
slug
summary
tags
category
icon
password
网址
 

new 申请空间

delete 将空间还系统

notion image
内核:操作系统
栈区:函数的形参,非静态的局部变量,函数现场保护数据等等,栈是向下增长的。 共享库的内存映射区域:用于装载一个共享的动态内存库。用户可使用系统接口创建共享内存,做进程间通信。
堆区:用于程序运行时动态内存分配,堆是可以上增长的。 数据段:存储全局数据和静态数据,分为.bss 和.data 。 代码段: 可执行的程序(机器指令)和 常量数据。

new:

运算符(关键字):申请空间 – 一个
– 一组
  1. 计算类型字节大小(自动);
  1. 调用malloc从堆区申请…(整型)空间;
  1. 用()内初始化空间;
  1. 将申请空间地址给指针P.
函数
定位符–对地址空间再次进行构建
notion image
 

delete:

将P所指空间“还”给系统.
notion image
 

内存泄漏

  1. 申请空间后地址丢失;
  1. 程序运行中不断从堆区获取空间,致使堆空间耗损完,进而程序崩溃。

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申请内存空间失败时抛出异常,所以要有捕获异常处理程序;