我有操作员新工作,但一旦我调用删除,它就崩溃了free (ptr)
.在这个Base类中重载operator new和delete时,任何人都可以告诉我做错了什么吗?提示:我不是在询问设计问题.
class Base {
private:
int i;
public:
Base () : i (10) {
}
static void * operator new (size_t size) {
if (size = 0) size = 1; // please read this line carefully! size = 0!
return malloc (size);
}
static void operator delete (void *ptr, size_t size) {
if (ptr == NULL) return;
free (ptr);
}
};
Run Code Online (Sandbox Code Playgroud)