Я пытался выполнить предложение malloc наподобие следующего:
TYPODATO *prof=(TYPODATO *)malloc((size_t)H*V*B2*sizeof(TYPODATO));
, где H*V*B2*sizeof(TYPODATO)
равно 13037160840 B = 13,04 ГБ. Если я выполняю команду free -m
в консоли, чтобы получить доступную память в МБ, я получаю 13486 МБ = 13,486 ГБ.
Однако предыдущий оператор malloc возвращает указатель NULL, указывающий, что такое количествопамять не может быть выделена. Запрашиваемый объем памяти не так велик, как доступный в системе, но даже если бы я смог его успешно выделить, система может использовать виртуальную память. Почему в этом случае система не использует виртуальную память?