1、从不同的角度谈内存
2、C中的动态内存管理
(1)malloc
使用malloc申请空间时:申请空间+不进行初始化
(2)calloc
使用calloc申请空间时:申请空间+初始化为0
(3)realloc
使用realloc申请空间时:(1)申请空间+不初始化
注意:参数类型:(要调整的空间首地址,要调整的大小)
如果原来的空间本身有值得话,需要拷过去
(2)申请空间+修改地址头信息
(3)申请空间+减小空间的大小
(4)realloc(nullptr,字节数): 功能等价于malloc
3、malloc(free)和new(delete)的比较
new :动态开辟空间 -------> delete :释放空间
new[] : 动态开辟连续的空间 -------> delete[] : 释放连续的空间
new[ 元素个数 ]
new[ 元素的初始值 ]
一般地,使用malloc申请空间,用free,不用delete
4、在使用自定义类型时:
new:先开空间---->再调用构造函数
delete:先调用析构函数—>再释放空间
同理:new[ ] 调用多次构造函数
delete[ ] 调用多次析构函数
5、operator new :申请空间失败会 抛异常
malloc :申请空间失败会返回指针空值
operator delete :封装free 不会抛异常