19 lines · c
1#ifndef OVERLOADED_DELETE_IN_HEADER2#define OVERLOADED_DELETE_IN_HEADER3 4struct DeleteInHeader {5 int data;6 static void operator delete(void *ptr);7};8 9void DeleteInHeader::operator delete(void *ptr) {10 DeleteInHeader *self = (DeleteInHeader *)ptr;11 self->data = 1; // no-warning: Still alive.12 13 ::operator delete(ptr);14 15 self->data = 2; // expected-warning {{Use of memory after it is released [cplusplus.NewDelete]}}16}17 18#endif // OVERLOADED_DELETE_IN_SYSTEM_HEADER19