TCMalloc - получить размер выделения для указателя
Используя TCMalloc - данный объект, выделенный в куче, есть ли способ получить выделенный размер объекта (имеется в виду только размер, переданный в вызове malloc)? Я прошу "надежный" метод (т.е. не возвращать размер слова назад, предполагая, что размер выделения сохранен перед указателем)
1 ответ
Начиная с версии 1.6, TCMalloc включает в себя:
size_t tc_malloc_size(void*);
который возвращает полезный размер выделения, начиная с аргумента.
Это идентично glibc malloc_usable_size
(или BSD malloc_size
), а также libtcmalloc
включает псевдонимы для обеих этих функций.
Тем не менее, это не обязательно первоначально запрошенный размер. Это может быть больше (и обычно есть). Я не верю, что TCMalloc (или большинство других реализаций malloc) сохраняют эти метаданные, поэтому (afaik) нет ни надежного, ни ненадежного механизма возврата во времени к исходному вызову malloc и проверки размера запроса.