Вам нужно поработать во встроенных системах, вам часто возвращают NULL: -)
Намного сложнее израсходовать память в современных системах хранения больших массивов адресов и резервных копий, но все еще вполне возможно в приложениях, где вы обрабатываете большие объемы данных, таких как ГИС или базы данных в памяти, или в места, где ваш ошибочный код приводит к утечке памяти.
Но на самом деле не имеет значения, испытывали ли вы это раньше - стандарт гласит, что это может произойти, поэтому вам следует учитывать это. В последние несколько десятилетий меня не сбила машина, но это не значит, что я бродил по дорогам, не глядя сначала.
И вы можете отредактировать:
Я не говорю об исчерпании памяти, ...
Само определение исчерпания памяти malloc
не дает вам желаемого пространства. Не имеет значения, вызвано ли это выделением всей доступной памяти или фрагментацией кучи, что означает, что вы не можете получить непрерывный блок, даже если совокупность всех свободных блоков на арене памяти выше, или искусственно ограничивает использование адресного пространства, например, с помощью функции, соответствующей стандартам :
void *malloc (size_t sz) { return NULL; }
Стандарт C не различает режимы сбоев, только то, что он успешен или неудачен.