История изменений
Исправление 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]'
Исправление 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]'
Исходная версия fsb4000, :
А что constexpr ? Как он помогает бороться с порчей памяти? Я всегда думал, что оно для оптимизации производительности.
constexpr
- это для надёжности всегда было.
Вот как пример ошибка компиляции вместо разыменования nullptr:
error: dereferencing a null pointer
https://gcc.godbolt.org/z/369rn3
constexpr находит много всего. Он также и leak находит:
allocated storage has not been deallocated