Garmaine Staff asked 2 years ago

I am quite surprised to the see the output when I overloaded the new operator just to track heap allocations. I don't understand why there are so many instead of just 4 for an integer pointer ?

Code:

#include <iostream>

void* operator new(size_t size) {
    std::cout << "Allocating " << size << " bytes. " << std::endl;
    return malloc(size);
}

int main() {
    std::cout << "Allocating for integer" << std::endl;
    int* a = new int;
}

If you scroll to the end there is the 4 bytes But what is the story for allocations before that ? I am using GNU 14 and Lib STDc++ also tried with other options like Compiler default and llvm all give the same output

Output:

Allocating 104 bytes. 
Allocating 48 bytes. 
Allocating 8 bytes. 
Allocating 64 bytes. 
Allocating 400 bytes. 
Allocating 24 bytes. 
Allocating 8 bytes. 
Allocating 64 bytes. 
Allocating 8 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 64 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 128 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 64 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 64 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 64 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 64 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 128 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 256 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 64 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 64 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 128 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 64 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 128 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 64 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 64 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 64 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 64 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 256 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 160 bytes. 
Allocating 24 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 88 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 88 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 80 bytes. 
Allocating 24 bytes. 
Allocating 112 bytes. 
Allocating 24 bytes. 
Allocating 24 bytes. 
Allocating 48 bytes. 
Allocating 72 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 72 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 72 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 72 bytes. 
Allocating 32 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 72 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 72 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 72 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 72 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 72 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 72 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 72 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 72 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 72 bytes. 
Allocating 32 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 72 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 72 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 72 bytes. 
Allocating 32 bytes. 
Allocating 48 bytes. 
Allocating 48 bytes. 
Allocating 72 bytes. 
Allocating 48 bytes. 
Allocating 32 bytes. 
Allocating 32 bytes. 
Allocating 72 bytes. 
Allocating 32 bytes. 
Allocating 96 bytes. 
Allocating 64 bytes. 
Allocating 16 bytes. 
Allocating 32 bytes. 
Allocating 16 bytes. 
Allocating 48 bytes. 
Allocating 208 bytes. 
Allocating 160 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 64 bytes. 
Allocating 48 bytes. 
Allocating 64 bytes. 
Allocating 56 bytes. 
Allocating 112 bytes. 
Allocating 80 bytes. 
Allocating 88 bytes. 
Allocating 80 bytes. 
Allocating 72 bytes. 
Allocating 72 bytes. 
Allocating 72 bytes. 
Allocating 96 bytes. 
Allocating 40 bytes. 
Allocating 48 bytes. 
Allocating 88 bytes. 
Allocating 32 bytes. 
Allocating 56 bytes. 
Allocating 56 bytes. 
Allocating 64 bytes. 
Allocating 48 bytes. 
Allocating 136 bytes. 
Allocating 136 bytes. 
Allocating 32 bytes. 
Allocating 40 bytes. 
Allocating 32 bytes. 
Allocating 96 bytes. 
Allocating 32 bytes. 
Allocating 80 bytes. 
Allocating 72 bytes. 
Allocating 40 bytes. 
Allocating 64 bytes. 
Allocating 88 bytes. 
Allocating 32 bytes. 
Allocating 40 bytes. 
Allocating 32 bytes. 
Allocating 216 bytes. 
Allocating 64 bytes. 
Allocating for integer
Allocating 4 bytes.