每个类默认都会有一个全局范围的 operator new
和 operator delete
接口,它们是由标准库提供的,可以用于动态内存分配和释放。如果一个类没有显式定义自己的 operator new
或 operator delete
,默认的全局版本会被使用。
默认 operator new
的特点
-
定义:
- 默认的
operator new
在<new>
头文件中定义。 - 它分配一块指定大小的内存(以字节为单位),并返回其地址。
- 默认的
-
实现(概念上):
void* operator new(std::size_t size) { if (void* p = std::malloc(size)) // 使用 malloc 分配内存 return p; throw std::bad_alloc(); // 如果分配失败,抛出异常 }
-
全局版本:
默认情况下,所有类都使用全局范围的operator new
和operator delete
: