Что касается выравнивания, calloc(1000, 23)
точно эквивалентно malloc(1000 * 23)
. Если реализация решит каким-то образом «выровнять» размер, она будет привязывать общий размер 23000
к некоторому большему значению, определенному реализацией. Никакой специальной обработки не применяется ко второму параметру calloc
(или к первому, в этом отношении).
Привязка 23
к 24
в calloc(1000, 23)
действительно означала бы привязку 23000
к 24000
(с точки зрения общего размера). Нет разумной практической реализации, которая бы потребовала добавления всего 1000
для выравнивания.