I'm trying to overload new/delete operators, but apparently overloading delete[] operator to show number of bytes being freed is not doing anything. Below you can see my code (it compiles without any error), new and delete work fine, but delete[] is not even called. From what I've read on: https://en.cppreference.com/w/cpp/memory/new/operator_delete operator delete[] supports number of bytes as second paramter since C++14 (I'm currently using visual studio 2019 with C++17).
#include <iostream>
using namespace std;
void* operator new(size_t size) {
cout << "Allocating " << size << " bytes.\n";
if (void* ptr = malloc(size))
return ptr;
throw bad_alloc();
}
void operator delete(void* memory, size_t size) noexcept {
cout << "Freeing " << size << " bytes.\n";
free(memory);
}
void operator delete[](void* memory, size_t size) noexcept {
cout << "Freeing " << size << " bytes.\n";
free(memory);
}
int main() {
int* a = new int[20];
delete[] a;
return 0;
}