参考资料
#include <iostream> using namespace std;
void f(){ cout << "hello, world" << endl; }
int main() { void (*(*p)) () = new (void (*[7]) ()); for(int i = 0; i < 7; i++) { p[i] = f; }
for(int i = 0; i < 7; i++) { (p[i])(); }
delete [] p;
return 0; } |
来验证下应该使用delete[];
覆盖operator new 和 operator new[];
void* operator new(std::size_t count){
cout << "new" << endl;
return malloc(count);
}
void* operator new[](std::size_t count){
cout << "new[]" << endl;
return malloc(count);
}
结果如下:
本文探讨了如何在C++中覆盖内置的`new`和`new[]`操作符,以自定义内存分配行为。通过实现`operator new`和`operator new[]`,并在代码中调用,可以看到输出揭示了自定义内存分配的过程。
870

被折叠的 条评论
为什么被折叠?



