我不确定我是否在C++中正确理解了"大小的释放".在C++ 14中,以下签名被添加到全局范围:
void operator delete(void* ptr, std::size_t size) noexcept
Run Code Online (Sandbox Code Playgroud)
我正在使用GCC 7.1.0编译以下源代码:
#include <cstdio> // printf()
#include <cstdlib> // exit(),malloc(),free()
#include <new> // new(),delete()
void* operator new(std::size_t size)
{
std::printf("-> operator ::new(std::size_t %zu)\n", size);
return malloc(size);
}
void operator delete(void* ptr) noexcept
{
std::printf("-> operator ::delete(void* %p)\n", ptr);
free(ptr);
}
void operator delete(void* ptr, std::size_t size) noexcept
{
std::printf("-> operator ::delete(void* %p, size_t %zu)\n", ptr, size);
free(ptr);
}
struct B
{
double d1;
void* operator new(std::size_t size)
{
std::printf("-> …
Run Code Online (Sandbox Code Playgroud)