Mar*_*son 5 c++ operator-overloading new-operator dynamic-memory-allocation delete-operator
我正在尝试重载 new/delete 运算符,但显然重载 delete[] 运算符以显示释放的字节数没有执行任何操作。下面你可以看到我的代码(它编译没有任何错误),new和delete工作正常,但delete[]甚至没有被调用。从我读到的内容来看: https: //en.cppreference.com/w/cpp/memory/new/operator_delete自 C++14 以来,运算符 delete[] 支持字节数作为第二个参数(我目前正在使用 Visual studio 2019 与 C++17)。
#include <iostream>
using namespace std;
void* operator new(size_t size) {
cout << "Allocating " << size << " bytes.\n";
if (void* ptr = malloc(size))
return ptr;
throw bad_alloc();
}
void operator delete(void* memory, size_t size) noexcept {
cout << "Freeing " << size << " bytes.\n";
free(memory);
}
void operator delete[](void* memory, size_t size) noexcept {
cout << "Freeing " << size << " bytes.\n";
free(memory);
}
int main() {
int* a = new int[20];
delete[] a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |