То, что вы видите в выводе pmap
, почти наверняка является добавлением , необходимым для malloc
арены для удовлетворения более крупных запросов, а не любым одиночным запросом.
Арена - это пул памяти, из которого распределяются выделения, и есть большая вероятность, что он начинается с определенного размера и расширяется только по запросу.
Например, если начальная арена составляет 1000 КБ , любое выделение, которое не исчерпывается, не требует дополнительного места на арене. Если вы выполните это пространство, процесс попытается запросить дополнительную арену из базовой среды, чтобы удовлетворить дополнительный спрос.
Что касается того, почему размер не тот, что вы просили, есть (по крайней мере) две возможные причины. Во-первых, арена - это не просто память, выделенная для ваших целей, она также содержит управляющую информацию, чтобы можно было правильно управлять памятью (размеры, контрольные суммы, указатели, список свободных мест и т. Д.).
Во-вторых, malloc
может быть перераспределено в ожидании, что это не будет последний запрос, который исчерпывает текущую арену. Некоторые стратегии выделения памяти go вплоть до удвоения текущего размера арены при запросе большего количества, чтобы снизить затраты на это.