Я выделяю память в программе на 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