Стандарт намеренно неопределен относительно размеров распространенных типов.[ Википедия ]
Маловероятно, что размер char
не изменится, но размер short
изменился ,Идиоматический способ:
type_t *foo = malloc(sizeof(type_t) * someDynamicAmount);
для любого типа (общего или сложного) type_t или
type_t *foo = malloc(sizeof(*foo) * someDynamicAmount);
, так что вы можете принять решение о внесении изменений в тип foo позже и толькоизмените его в одном месте.