Это называется Lazy Allocation.
Большинство ОС, таких как Linux, имеют модель памяти Lazy Allocation, в которой возвращаемый адрес памяти является виртуальным адресом, а фактическое выделение происходит только во время доступа.ОС предполагает, что она сможет обеспечить это распределение во время доступа.
Память, выделенная malloc , не поддерживается реальной памятью, пока программа не коснется ее.
Хотя, так как calloc инициализирует память до 0, вы можете быть уверены, что ОС уже поддержала выделение памяти с помощью фактической оперативной памяти (или подкачки).
Попробуйте использовать calloc
и, скорее всего, он вернет вас из памяти, если ваш файл / раздел подкачки не будет достаточно большим, чтобы удовлетворить запрос.