LINUX.ORG.RU

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

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

А что constexpr ? Как он помогает бороться с порчей памяти? Я всегда думал, что оно для оптимизации производительности.

constexpr - это для надёжности всегда было.

Вот как пример ошибка компиляции вместо разыменования nullptr:

error: dereferencing a null pointer

https://gcc.godbolt.org/z/369rn3

constexpr находит много всего. Он также и leak находит:

allocated storage has not been deallocated

https://gcc.godbolt.org/z/1fqcax

и use-after-free

error: modification of 'heap deleted' is not a constant expression

https://gcc.godbolt.org/z/EhzsM5

и выход за пределы массива:

array subscript value '3' is outside the bounds of array 'arr' of type 'int [3]'

https://gcc.godbolt.org/z/G9Y7YT

Исправление fsb4000, :

А что constexpr ? Как он помогает бороться с порчей памяти? Я всегда думал, что оно для оптимизации производительности.

constexpr - это для надёжности всегда было.

Вот как пример ошибка компиляции вместо разыменования nullptr:

error: dereferencing a null pointer

https://gcc.godbolt.org/z/369rn3

constexpr находит много всего. Он также и leak находит:

allocated storage has not been deallocated

https://gcc.godbolt.org/z/1fqcax

и выход за пределы массива:

array subscript value '3' is outside the bounds of array 'arr' of type 'int [3]'

https://gcc.godbolt.org/z/G9Y7YT

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

А что constexpr ? Как он помогает бороться с порчей памяти? Я всегда думал, что оно для оптимизации производительности.

constexpr - это для надёжности всегда было.

Вот как пример ошибка компиляции вместо разыменования nullptr:

error: dereferencing a null pointer

https://gcc.godbolt.org/z/369rn3

constexpr находит много всего. Он также и leak находит:

allocated storage has not been deallocated

https://gcc.godbolt.org/z/1fqcax