Я перегрузил операторы new
и delete
, чтобы отслеживать, где мы выделяем и освобождаем память.Перегруженный оператор new
работает нормально, но я получаю сообщение об ошибке при попытке использовать перегруженный оператор delete
.Я надеюсь, что кто-то может пролить немного света.Это, вероятно, что-то незначительное.
Код файла заголовка
void *operator new[] (size_t size, const char *file, int line, const char *function);
void operator delete(void *p, const char *file, int line, const char *function);
// other operators
#define NewWithDebug new (__FILE__, __LINE__, __FUNCTION__)
#define DeleteWithDebug delete (__FILE__, __LINE__, __FUNCTION__)
Код исходного файла
void *operator new (size_t size, const char *file, int line, const char *function)
{
printf("Memory Allocated (Size %zu): file= %s , function = %s , line =%d \n", size, file, function, line );
return malloc(size);
}
void *operator new[] (size_t size, const char *file, int line, const char *function)
{
printf ("Memory Allocated (Size %zu): file= %s , function = %s , line =%d \n", size, file, function, line);
return malloc(size);
}
void operator delete(void *p, const char *file, int line, const char *function)
{
printf("Memory Deallocated: file= %s , function = %s , line =%d \n", file, function, line);
free(p);
}
Main
int* Numbers = NewWithDebug int(5);
DeleteWithDebug Numbers; // <---- Error Here;
Сообщение об ошибке
error: expected `;' before 'Numbers