How to overload delete[] operator to show number of bytes being freed?

Viewed 176

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;
}
0 Answers
Related