我已为光线跟踪应用程序实现了专门的树数据结构。我在每个树的节点中使用std :: list来存储数据项。我在运行应用程序时出现问题,使用此数据结构时,不仅会崩溃应用程序,还会冻结整个操作系统(Windows 7)。这仅在发布模式下发生;在调试模式下需要更长的时间(如预期的那样),但工作正常。我正在使用Visual Studio 2010.在发布模式下运行(Ctrl + F5)或调试(F5)都会导致整个系统崩溃。C++完全系统崩溃,仅限发布模式
从我迄今为止发现的情况来看,释放模式和调试模式之间的不同行为似乎归因于内存泄漏,因为调试模式(从我所了解的内容来看)有点宽容。但是,我没有发现任何关于C++应用程序崩溃的操作系统。
我只想知道在什么情况下会发生这种行为,所以我知道在哪里看。将问题简化为简单并追踪问题是困难的,因为它具有高度并行性和处理大量数据的光线追踪性质。
哦,问题是不是一个无限递归导致堆栈溢出。我故意实现了这一点,并没有使操作系统崩溃。
很大的功能从用户空间代码冻结Windows 7。你说这是大规模并行和大量的数据,可能是因为你耗尽了资源,并且使整个系统濒临停滞。我有应用程序通过运行所有可用的RAM和交换来关闭Linux机器,成为一个3分钟的任务切换到终端,并尝试杀死应用程序。 –
如果您的代码是可移植的,请尝试在更稳定的操作系统上进行编译,并找出错误的原因。通过崩溃操作系统进行调试需要很长时间。 – thiton
如果您使用调试信息构建发行版本,它会正常工作吗?否则,它可能会帮助您缩小发生碰撞事故的地点。 –