LINUX.ORG.RU

История изменений

Исправление Manhunt, (текущая версия) :

Конпелятор ничего не может делать с памятью, потому что память аллокатора.

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

Из dereference указателя компилятор делает вывод что указатель валиден, и опускает провернку на null.

В случае с невалидностью ссылок после реаллокации, компилятор может точно так же сделать вывод, что разыменовывающий эти ссылки код никогда не выполняется и вообще этот код не генерировать.

Исходная версия Manhunt, :

Конпелятор ничего не может делать с памятью, потому что память аллокатора.

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

Из dereference компилятор делает вывод что указатель валиден, и опускает провернку на null.

В случае с невалидностью ссылок после реаллокации, компилятор может точно так же сделать вывод, что разыменовывающий эти ссылки код никогда не выполняется и вообще этот код не генерировать.