Я бы согласился, что вы все равно не должны полагаться на это, но для чего-то вроде хеш-функции это довольно полезно.
Выделение небольших блоков памяти с помощью Malloc
Для небольших выделений памяти, где small - это меньше, чем несколько страниц виртуальной памяти, malloc перераспределяет запрошенный объем памяти из списка (или «пула») свободных блоков увеличивающегося размера. Любые небольшие блоки, которые вы освобождаете с помощью бесплатной подпрограммы, добавляются обратно в пул и используются повторно для наилучшего соответствия. Сам пул памяти состоит из нескольких страниц виртуальной памяти, которые выделяются с помощью процедуры vm_allocate и управляются для вас системой.
При выделении любых небольших блоков памяти помните, что гранулярность для блоков, выделенных библиотекой malloc, составляет 16 байтов . Таким образом, наименьший блок памяти, который вы можете выделить, составляет 16 байтов, а любые блоки, размер которых больше этого числа, кратны 16. Например, если вы вызываете malloc и запрашиваете 4 байта, он возвращает блок, размер которого составляет 16 байтов; если вы запрашиваете 24 байта, он возвращает блок, размер которого составляет 32 байта. Из-за этой детализации вы должны тщательно проектировать свои структуры данных и стараться делать их кратными 16 байтам, когда это возможно.