Оператор delete вызывает повреждение кучи, в то время как оператор new работает нормально

У меня работает оператор 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);
    }
};
5
задан Jaywalker 27 November 2010 в 07:53
поделиться