C++ 内存管理

知识点:

new 和 delete 对比malloc申请 自定义类型的内存 会调用构造和析构函数 创建自定义类型的数组时 甚至会初始化

如果没有默认构造,则要用{}将构造函数的参数传过去

win下 vs2019中 连续的一个步骤里面,如果存在构造+拷贝构造 会被优化成 一个构造

 

第一个步骤里面有 拷贝构造 + 拷贝构造(赋值 + 拷贝构造优化而来)优化成一个拷贝构造

第二个种写法里面,拷贝构造 + 赋值。ra2已经存在,无法优化成拷贝构造,开销多了一个构造 和 一个赋值

内存管理

一份源代码由数据和代码组成,在内存中也将两种分开存储,好处是不同的程序可以共享一份代码,同时拥有不同的数据。这两大类又以段(section)的方式存储,分为代码段/常量区,数据段/静态区。

例题

 

char2 把abcd/0 这些单个的char 类型的变量存在数组里面

pchar3 是把 abcd/0 这堆字符串常量的地址存在栈区上

ptr1 是int* 类型的局部变量,而不是malloc出来的空间

sizeof算大小 数组名算的是整个数组的大小 指针算的是指针的大小

strlen算到/0 

new 和 c语言里面的 初始化部分数组一样,其余的初始化0,而没做初始化时全是随机值。

关于初始化: calloc全部初始化成某一个值,过于暴力;而new对于自定义类型结构回去调用他的构造函数进行初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值