3.7、内存管理(new·delete)

1. 内存结构

内核空间

(用户代码不能读写)

栈(向下增长)

内存映射段

(文件映射、动态库、匿名映射)

堆(向上增长)

数据段

(全局数据、静态数据)

代码段

(可执行代码/只读常量)

2. C++内存管理方式:new、delete

1)内置类型中的new、delete:

内置类型中的new并不会自己初始化创建的变量,需要人工初始化;

针对内置类型,new/delete 跟 malloc/free 没有本质区别,只有用法的区别,new/delete用法简化了!

//new用法:new + 类型
int* P2 = new int;//用new开辟出一个int空间,并把起始地址给P2
int* P2 = new int[5];//用new开辟出5个int空间(其实是连续的空间),并把起始地址给P2

int* P2 = new int(5);//用new开辟出一个int空间,并初始化为5,并把起始地址给P2
int* P2 = new int[5]{1,2,3};//用new开辟出5个int空间(其实是连续的空间),并初始化为1,2,3,0,0,并把起始地址给P2


//delete用法:delete + 地址
delete P2;//释放P2对应的一段空间(对应于一个空间类型,如1个int)

delete[] P2;//释放P2对应的一段空间(对应于多个空间类型,如5个int)

2)自定义类型中的new、delete:

其实C++中的new、delete是为自定义类型准备的,不仅在堆中申请出空间,还会用构造函数和析构函数

//自定义类型:A
A* P2 = new A;//开辟一个A大小的空间并把地址给P2,并调用构造函数初始化
delete P2;//释放P2所指的空间,并调用析构函数(P2为自定义类型开辟的空间的地址)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值