假设我需要重载全局
::operator new()
以便与每个分配的对象一起存储额外数据。基本上它的工作方式如下:
- 对于每次调用全局
::operator new()
,它将获取传递的对象大小并添加额外数据的大小 - 它将分配一个内存块,该块的大小在前一步中推导出来
- 它将偏移指针到未被额外数据占用的块的部分,并将该偏移值返回给调用者
::operator delete()
将执行相反的操作-移动指针、访问额外数据、释放内存。
现在问题是我如何分配内存?当然我可以调用malloc()
或一些特定于平台的函数(通常是这样做的)。但是通常情况下,当我需要在C++中分配原始内存时,我会调用::operator new()
。我能否从我的重载的全局::operator new()
内部调用原始的::operator new()
来执行内存分配?