Не наверняка, независимо от платформы. Я не помню никаких подробностей (за исключением ОС, которую я почти уверен, что вы не используете), но ваша ОС может предложить способ проверки «размера» выделенного распределения, и новые возможности могут используйте malloc или эквивалентный. Таким образом, вы можете получить то, что распределитель памяти считает размером выделения. Это может включать или не включать какой-либо заголовок, предшествующий выделению (вероятно, нет, я думаю).
Один из вариантов - выделить несколько миллионов маленьких объектов и посмотреть, сколько памяти использует ваша программа. Затем выделите еще несколько миллионов и посмотрите снова. Общее количество обычно увеличивается в виде кусков, поскольку процесс выделяет ОЗУ (или виртуальное адресное пространство) ОС, но при большом количестве объектов эффект этой «ошибки округления» будет обычно стремиться к 0 байтов на объект.
Это должно сказать вам, что вы, вероятно, хотите знать, что является средней нагрузкой на память для многочисленных небольших объектов кучи. Он будет включать в себя любые накладные расходы, связанные с распределением памяти, такие как заголовки непосредственно перед выделением или внешние структуры для отслеживания выделений и / или блоков.