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