c++ - 如果没有出现段错误,如何查找 "index out of bound"

标签 c++ c arrays segmentation-fault indexoutofboundsexception

我有一个程序会导致机器出现段错误,我无法访问它。但是,当我在我的机器上使用相同的编译器和相同的输入编译和运行它时,我什么也得不到。问题可能是“数组索引越界”,在某些情况下可能会导致段错误,但是编译器不会显示任何警告。该程序庞大而复杂。所以我不能仅仅通过检查代码来发现问题。

关于如何在我的机器上获取段错误的任何建议?这样我就可以调试代码并找到问题所在。

最佳答案

你可以使用 valgrind如果它在 Linux 机器上工作。 要使用 valgrind,您只需在控制台输入:

valgrind --leak-check=full --num-callers=20 --tool=memcheck ./program

并且应该根据变量返回大小为 X 的无效读/写,并且(如果您使用调试信息进行编译),它会告诉您可能是问题所在的行。

顺便说一句,您可以在 Ubuntu/Debian Linux 中安装 valgrind(例如),就像:

sudo apt-get install valgrind

关于c++ - 如果没有出现段错误,如何查找 "index out of bound",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34669132/

相关文章:

c++ - SetWindowPos 在笔记本电脑上使用放大的对话框

c - 为什么嵌套函数可以在turboc++中工作,但不能在gnug++中工作?

c - 如何有效地在年历上存储任务信息

c - 尝试编译讲师的程序时出错(定义行中预期的符号)

c - 无法从结构中的二维数组打印字符串?

虚拟机上的 .Net 性能

c++ - 在 VC++ 中编译查找,但 G++ 在链接时给出 'undefined reference' 问题。

c++ - 在内存使用或编译时间方面哪个更好?

c - 当我尝试在某个目录中创建一个 txt 文件时,它的末尾有垃圾字符

Java-使用for循环将字母表放入数组中