Если вы просто хотите узнать, сколько места вы запросили, вам не повезло, поскольку это не является частью контракта malloc(3)
'.Некоторые конкретные реализации malloc поддерживают API для этого, но это не переносимо.
Так что вы не сможете, если не напишите свой собственный malloc
.
Если вы действительно хотите узнать общееОбъем выделенной памяти, вам еще больше не повезло.Если malloc
возвращает значение p
для размера q
, то хранилище может начинаться с любого p-X
и расширяться до p-X+q+Y
для любых значений X и Y, которые разработчики malloc
сочли удобными для своихсобственные издержки.
Правильный способ обнаружения ошибок в использовании указателя - использовать такой инструмент, как valgrind.