1. C++操作符new做了什么?
- 分配空间
- 类型转换
- 成员初始化
void * temp = operator new(sizeof(A)); // 1
try{
A * ptr = static_cast<A*> temp; // 2
ptr->A(); // 3
return ptr;
}
catch(...){
operator delete(ptr);
throw ...;
}
- 成员初始化
2. C++操作符delete做了什么?
- 调用析构函数
- 释放ptr指针的空间
if (ptr != nullptr)
{
ptr->~A(); // 1
operator delete(ptr); // 2
}