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 不会抛异常
3122

被折叠的 条评论
为什么被折叠?



