Заставить malloc () вернуть NULL вместо сбоя программы?

Я выделяю память в программе на C, используя malloc . Моя программа может выделить больше памяти, чем есть в системе, и тогда программа выйдет из строя. Для моих целей было бы лучше, если бы malloc просто возвращал NULL (как будто должен был ), чтобы я мог поймать ошибку.Вместо этого он выдает сообщение об ошибке: «Сейчас нет памяти для программирования: вызывать malloc небезопасно». И вылетает программа.

Как я могу это исправить?

Изменить: я знаю, что программа вылетает сама по себе, а не потому, что я пытаюсь сослаться на нулевой указатель. Программа никогда не вызывает напрямую malloc , а вместо этого вызывает функцию, которую я написал, которая вызывает malloc , а затем проверяет, возвращает ли она NULL . Никогда не говорится, что malloc вернул NULL .

Редактировать 2: Если это полезно, вот полный вывод ошибки:

Программа получила сигнал: «EXC_BAD_ACCESS».
sharedlibrary apply-load-rules all
предупреждение: невозможно восстановить ранее выбранный кадр.
Форматировщики данных временно недоступны, попытаются повторить попытку после «продолжить». (Отлаживаемая программа получила сигнал во время вызова функции из GDB.
GDB остается в кадре, в котором был получен сигнал.
Чтобы изменить это поведение, используйте "set unwindonsignal" on "
Оценка выражения, содержащего функцию (dlopen), будет прекращена.)
Сейчас нет памяти для программирования: небезопасно вызывать malloc

5
задан Michael Dickens 19 August 2010 в 03:37
поделиться