История изменений
Исправление Manhunt, (текущая версия) :
Конпелятор ничего не может делать с памятью, потому что память аллокатора.
Компилятор, основываясь на формально выведенных из стандарта заключениях, применяет достаточно агрессивные оптимизации. Вот тебе живой пример: https://lwn.net/Articles/342330/
Из dereference указателя компилятор делает вывод что указатель валиден, и опускает провернку на null.
В случае с невалидностью ссылок после реаллокации, компилятор может точно так же сделать вывод, что разыменовывающий эти ссылки код никогда не выполняется и вообще этот код не генерировать.
Исходная версия Manhunt, :
Конпелятор ничего не может делать с памятью, потому что память аллокатора.
Компилятор, основываясь на формально выведенных из стандарта заключениях, применяет достаточно агрессивные оптимизации. Вот тебе живой пример: https://lwn.net/Articles/342330/
Из dereference компилятор делает вывод что указатель валиден, и опускает провернку на null.
В случае с невалидностью ссылок после реаллокации, компилятор может точно так же сделать вывод, что разыменовывающий эти ссылки код никогда не выполняется и вообще этот код не генерировать.