Я выделяю память в программе на C, используя malloc
. Моя программа может выделять больше памяти, чем у системы есть место, после чего программа выйдет из строя. Для моих целей было бы лучше, если бы malloc
просто вернул NULL
(вроде, видимо, supposed to), поэтому я могу поймать ошибку. Вместо этого он выдает сообщение об ошибке «Нет памяти для программирования сейчас: небезопасно вызывать malloc». И сбой программы.Сделать malloc() вернуть NULL вместо сбоя программы?
Как это исправить?
Редактировать: Я знаю, что программа рушится сама по себе, а не потому, что я пытаюсь ссылаться на нулевой указатель. Программа никогда напрямую не вызывает malloc
, но вместо этого вызывает функцию, которую я написал, которая вызывает malloc
, а затем проверяет, возвращает ли она NULL
. Он никогда не говорит, что malloc
вернулся NULL
.
Edit 2: Если это полезно, здесь полный вывод ошибок:
Программа получила сигнал: «EXC_BAD_ACCESS».
sharedlibrary apply-load-rules all
предупреждение: невозможно восстановить ранее выбранный кадр.
Data Formatters временно недоступны, повторите попытку после продолжения. (Отлаживаемая программа была сигнализируется в то время как функция вызывается из GDB.
GDB остается в кадре, где был получен сигнал.
Чтобы изменить это использование поведения «установить unwindonsignal на»
оценки экспрессии, содержащей функцию (dlopen) будет заброшены)
Нет памяти для программы в настоящее время:. небезопасная для вызова таНоса
В зависимости от вашей операционной системы. Вы на Linux, Mac, Windows? – Potatoswatter
Mac OS X Snow Leopard. (Я не уверен, что версия ОС имеет значение, но это не может повредить, чтобы знать.) –
Не могли бы вы разместить функцию, которую вы вызываете malloc? – GWW