Я часто поймаю себя на том, что делаю следующее (в некритических компонентах):
some_small_struct *ptr=(some_small_struct *) malloc(sizeof(some_small_struct));
ptr->some_member= ...;
В словах я выделяю динамическую память для небольшой структуры, и я использую ее напрямую, не проверяя указатель malloc'ed. Я понимаю, что всегда есть вероятность, что программа не получит память, о которой она просит (duh!), Но подумайте о следующем:
Если программа не может даже получить некоторую память для небольшой структуры с куча, возможно, надвигаются гораздо большие проблемы, и это не имеет никакого значения.
Кроме того, что, если обращение с нулевым указателем еще более усугубляет неустойчивую ситуацию? (например, попытка регистрации условий вызывает еще больше несуществующих ресурсов и т.д.)
Является ли мой разум здравым (достаточно)?
Обновление
- Функция "safe_malloc" может быть полезна при отладке и может быть полезной в противном случае
-
+X
доступ может скрыть основную причину указателя NULL - В Linux "оптимистичное распределение памяти" может скрывать условия OOM (Out-Of-Memory) loomin.