gpt4 book ai didi

c++ - 奇怪的 C++ 错误,当添加 2 个打印语句时程序工作正常,没有它们的段错误

转载 作者:行者123 更新时间:2023-11-30 01:26:25 25 4
gpt4 key购买 nike

我正在用 C++ 编写一些代码,这些代码必须计算大量光线/对象交点,但我遇到了一个我不理解的非常奇怪的错误。

在一些非常大的实例(很多三角形和射线)上,我的程序会出现段错误。我一直试图找出这些段错误的来源,但我被难住了。我查看了我的代码,似乎我不应该尝试索引数组的末尾或访问空指针。我的电脑似乎也没有内存不足。当我监控它时,它似乎还有几百兆可用。

在调试时,我尝试了以下操作:我在我的代码中插入了两个打印语句,试图确定导致段错误的确切交叉计算。不幸的是,当我插入打印语句并再次运行程序时,一切正常。它没有出现段错误。因此,如果我删除这两个打印语句并运行该程序,它会出现段错误,如果我将它们保留在其中,它就可以正常工作(尽管速度要慢得多,因为它必须打印所有内容)。除了删除/添加那些打印语句外,其他一切都保持完全相同。

什么可能导致这种情况发生?将 print 语句添加到 C++ 程序如何可能导致它不发生段错误?

如果有帮助的话,算法只是一个单线程,我在 Linux 中使用 g++ 编译了所有东西。

最佳答案

What could possibly cause this to happen? How would adding print statements to a c++ program possibly cause it to not segfault?

欢迎使用未定义的行为。

您需要用自检版本替换您的数组/指针/等,并证明,而不是猜测,您在这些方面没有任何错误。

关于c++ - 奇怪的 C++ 错误,当添加 2 个打印语句时程序工作正常,没有它们的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10457468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com