G_strdup возвращает NULL при ошибке выделения памяти? - PullRequest
0 голосов
/ 14 сентября 2011

В документации glib отсутствуют многие важные вещи, которые, я думаю, должны обязательно включать в документацию API.Например, запись для g_malloc говорит ничего о том, что он будет аварийно завершать работу при сбое выделения памяти (в противоположность поведению стандарта malloc, которое, как следует из названия, имитирует).Только если вы заметите, что есть также вариант с именем g_try_malloc и прочитаете его описание, вам сообщат, что g_try_malloc

Попытка выделить n_bytes и возврат NULL вотказ.В отличие от g_malloc (), который прерывает программу при сбое.

Теперь для вопроса, glib имеет функцию g_strdup, которая также не упоминает ничего о возможном возвращении NULL.Я предполагаю, что этого не произойдет, поскольку подразумевается, что он будет использовать g_malloc для внутреннего использования.Будет ли это?

1 Ответ

4 голосов
/ 14 сентября 2011

Документация говорит это, хотя. Посмотрите вводный раздел на странице «Выделение памяти» в руководстве по GLib:

Если какой-либо вызов для выделения памяти завершается неудачно, приложение завершается. Это также означает, что нет необходимости проверять, успешно ли выполнен вызов.

Это относится к любому вызову библиотеки, который выделяет память, и, следовательно, к g_strdup().

...