Я пытался выяснить, как работает функция malloc_info (), расположенная в malloc.h.Я знаю, что вы должны передать его в ФАЙЛ *, и что никакие опции еще не реализованы, но я в недоумении относительно того, что он на самом деле сообщает !?Кроме того, я написал тестовое приложение, которое выделяет целую кучу памяти, и значения, сообщаемые функцией malloc_info (), не меняются, за исключением случаев, когда я выполнил 20 000 однобайтовых распределений?
Есть ли кто-нибудь, кто имеетлюбой опыт работы с malloc_info () и может пролить некоторый свет на то, какие аспекты памяти он должен измерять?
Следует отметить, что я ничего не мог найти в Google о malloc_info (), просто какая-то отрывочная ошибкаreports.
Пример Вывод из malloc_info ():
<malloc version="1">
<heap nr="0">
<sizes>
</sizes>
<total type="fast" count="0" size="0"/>
<total type="rest" count="0" size="0"/>
<system type="current" size="135168"/>
<system type="max" size="135168"/>
<aspace type="total" size="135168"/>
<aspace type="mprotect" size="135168"/>
</heap>
<total type="fast" count="0" size="0"/>
<total type="rest" count="0" size="0"/>
<system type="current" size="135168"/>
<system type="max" size="135168"/>
<aspace type="total" size="135168"/>
<aspace type="mprotect" size="135168"/>
</malloc>
EDIT:
В качестве дополнительного пояснения;моей резервной позицией является функция mallinfo (), но я надеялся использовать malloc_info (), поскольку, насколько я могу судить, она предназначена для замены mallinfo ().Я обнаружил, что mallinfo () и malloc_info () не работают одинаково.В моих тестах mallinfo () отслеживает все мои выделения, тогда как malloc_info () не делает этого вообще.Я могу только предположить, что malloc_info () в настоящее время не работает или не предназначена для той же цели, что и mallinfo ().
В статье, предоставленной omnifarious, есть веские причины, по которым mallinfo () следует объявить устаревшими.:
совершенно не подходит для 64-битных машин.Типы данных, требуемые спецификацией SysV, не допускают значений больше 2 ^ 31 байт (все поля в структуре являются целыми числами).Вторая проблема заключается в том, что структура данных действительно специфична для реализации malloc, используемой в то время SysV.
Однако я думаю, что в настоящее время malloc_info () еще не готова занять ее место.
ДОПОЛНИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: После еще большего копания кажется, что malloc_info () сообщает размер арены из mallinfo () во всех местах, где появляется 135168 (по крайней мере, это то, что ему соответствует).Это кажется гораздо менее полезным и является очень одномерной информацией по сравнению с тем, что допускает mallinfo ().