malloc/free和new/delete比较
malloc/free和new/delete的区别和联系?
它们都是动态管理内存的入口
malloc/free是C/C++标准库的函数,new/delete是C++操作符
malloc/free只是动态分配内存空间/释放空间。而new/delete除了 分配空间还会调用构造函数和析构函数进行初始化与清理(清理成员)
malloc/free需要手动计算类型大小且返回值会void*,new/delete 可自己计算类型的大小,返回对应类型的指针
new操作符/操作符new/定位new表达式
1. new操作符 new delete 操作符是C++用来动态申请内存的关键字
2. 操作符new 操作符new是一个函数:
void * operator new (size_t size);
void operator delete (size_t size)
void * operator new
void operator delete[] (size_t size)
定位new表达式是在已分配的原始内存空间中调用构造函数初始化一个对象
new (place_address) type new (place_address) type(initializer-list) place_address必须是一个指针,initializer-list是类型的初始化列表 定位new表达式实际调用:
void * operator new (size_t size,void* where)
{ return where; }