你可以在使用gcc时定义_GLIBCXX_DEBUG和_GLIBXX_DEBUG_PEDANTIC进行编译。这将启用glibc断言,如果请求超出边界的访问,则会引发断言。使用valgrind::memcheck测试还会揭示坏的内存读取。
是的: Valgrind。 还有很多其他的: http://en.wikipedia.org/wiki/Memory_debugger。 请注意,大多数std::vector的实现都有一个调试模式,它们将进行运行时边界检查。
valgrind
检查无效的内存访问。 - Kerrek SB