Я предполагаю, что это, вероятно, история, предшествующая временам, когда у С были прототипы для функций.В те времена без прототипа аргументы в основном должны были быть int
, typedef
size_t
, вероятно, даже не были изобретены.Но тогда INTMAX
- это самый большой кусок, который вы можете выделить с помощью malloc
, а разделение его на две части просто дает вам большую гибкость и позволяет вам выделять действительно большие массивы.Даже в то время существовали методы получения больших страниц из системы, которые по умолчанию обнулялись, поэтому эффективность была не столько проблемой с calloc
, сколько для malloc
.
В настоящее время с size_t
и прототип функции под рукой, это всего лишь ежедневное напоминание о богатой истории C.