Разыменование нулевого указателя: Неопределенное поведение .
Неопределенное поведение означает, что все может произойти, поэтому невозможно определить поведение для этого.
По общему признанию, я собираюсь добавить эту стандартную цитату C ++ в n-й раз, но, кажется, это должно быть.
Относительно неопределенного поведения,
C ++ Стандартный раздел 1.3.24 гласит:
Допустимое неопределенное поведение варьируется от полного игнорирования ситуации с непредсказуемыми результатами до поведения во время перевода или выполнения программы документированным образом, характерным для среды (с выдачей или без выдачи диагностического сообщения), до завершения перевода или выполнения с выдачей диагностического сообщения).
Примечание:
Кроме того, просто чтобы сообщить об этом:
Использование возвращенной ссылки или указателя на локальную переменную внутри функции также является неопределенным поведением. Вы должны выделить указатель на freestore (кучу), используя new, а затем вернуть ссылку / указатель на него.
EDIT:
Как @James McNellis, правильно указывает в комментариях,
Если возвращенный указатель или ссылка не используется, поведение четко определено .