Обращаясь к слову «выравнивание» в заголовке.
Стандарт malloc
не дает никаких гарантий относительно выравнивания возвращаемого распределения. Конкретные реализации могут или не могут делать полезные вещи в этой области, и могут иметь или не иметь какое-то расширение, чтобы позволить вам управлять выравниванием возвращаемых блоков. Однако эти вещи не будут переносимыми.
Как уже говорили другие, каждое распределение гарантированно будет непрерывным и, по крайней мере, таким большим, как вы просили; но нет никаких гарантий относительно относительного расположения любой пары распределений. Также нет портативного способа узнать, насколько велико фактическое выделение, что делает небезопасным и неопределенным доступ к памяти сверх запрошенного размера (опять же, некоторые реализации могут предоставлять расширение для решения этих проблем).