У меня работает оператор new, но как только я вызываю delete, он вылетает на free (ptr)
строке. Может ли кто-нибудь сказать, что я делаю неправильно при перегрузке оператора 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);
}
};