Чтобы узнать размер памяти, полученной с помощью malloc - PullRequest
0 голосов
/ 16 мая 2018

char buf [50];char * ptr;

scanf ("% s", buf);ptr = (char *) malloc (sizeof (buf) +1);

// И как узнать, что динамическое размещение выполнено правильно?я хочу узнать размер памяти, на который указывает ptr

1 Ответ

0 голосов
/ 19 мая 2018

Стандартная функция malloc не предоставляет эту информацию.Это непростой способ узнать размер объекта, на который указывает указатель, если вы не используете пользовательские распределители или не добавляете некоторые метаданные для хранения информации о размере вместе с объектами кучи (когда вызывается malloc, память выделяется из компоновки кучи) путем вставкифункция malloc.Есть решения для предоставления этой информации.Существует идея, называемая толстым указателем, и можно найти несколько библиотек жирных указателей, например Cello .В этой работе можно найти улучшенную версию указателя жира.

...