new/delete

一个new的大概实现。所以delete 空指针是没错的,算是合法操作
// new circle(…)
{
  void* temp = operator new(sizeof(circle));
  try {
    circle* ptr =
      static_cast(temp);
    ptr->circle(…);
    return ptr;
  }
  catch (...) {
    operator delete(ptr);
    throw;
  }
}

//delete 
if (ptr != nullptr) {
  ptr->~shape();
  operator delete(ptr);
}

//参考极客时间

你可能感兴趣的:(new/delete)