为什么程序无法准确判定 RE

学术版

> 为什么程序无法准确判定 RE 慢。用 AddressSanitizer 判越界是较快的了,但 `-O2` 下也[比不判慢一倍左右](https://github.com/google/sanitizers/wiki/AddressSanitizerPerformanceNumbers)。
by ud2_ @ 2022-05-14 20:31:33


大抵一个重要原因确实是检查了会变慢。 C++ 对数组访问越界的检查非常不严格,甚至数组访问越界有可能恰好修改到创建的其他变量上 只有在非常严重的访问越界的时候才会 RE。
by Echidna @ 2022-05-14 20:31:45


如果你对自己很不放心,可以使用 `std::array<T,N>::at` 来代替一切数组访问 其会在访问越界时抛出 `std::out_of_range`
by Kris_hukr @ 2022-05-14 20:45:15


|