Нулевой указатель
-
Определение и использование нулевого указателя
- Нулевой указатель – это указатель, который указывает на недопустимый объект.
- В некоторых языках нулевой указатель может быть представлен как специальное значение или тип.
- Нулевой указатель может использоваться для обозначения конца списка или невозможности выполнения действия.
-
Сравнение с неинициализированными указателями
- Нулевой указатель гарантированно отличается от любого указателя на допустимый объект.
- Большинство языков не гарантируют семантическую полноту нулевых указателей.
-
Поведение в C
- Два нулевых указателя любого типа сравниваются как равные.
- Разыменование нулевого указателя в C является неопределенным поведением.
- Существуют случаи, когда разыменование нулевого указателя является намеренным и четко определенным.
-
С++ и другие языки
- В C++11 была введена константа nullptr и тип nullptr_t для представления нулевого указателя.
- В разных языках используются разные литералы для обозначения нулевого указателя.
-
Разыменование нулевого указателя
- Попытка разыменования нулевого указателя обычно приводит к ошибке во время выполнения или сбою программы.
- Ошибка разыменования нулевого указателя называется уязвимостью программного обеспечения.
-
Смягчение и альтернативы
- Существуют методы для отладки разыменований нулевых указателей.
- Альтернативы нулевым указателям включают использование значений, обозначающих “будущее”, “неприменимо”, “ошибку” и другие.
-
История и рекомендации
- Тони Хоар изобрел нулевую ссылку в 1965 году и назвал ее “ошибкой на миллиард долларов”.
- В статье Хоара описывается, как его изобретение привело к ошибкам и сбоям в системах.