Я очень удивлен, увидев вывод, когда я перегрузил новый оператор только для отслеживания распределения кучи. Я не понимаю, почему вместо целых 4 столько целых указателей?
Код:
#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;
}
Если прокрутить до конца, то получится 4 байта. история для распределения до этого? Я использую GNU 14 и Lib STDc ++, также пробовал с другими параметрами, такими как компилятор по умолчанию, и llvm все дают одинаковый вывод
Вывод:
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.