CMake的版本做了我的代码停止工作正常(CMake Release made my code st

2019-10-30 04:30发布

我有一个C ++程序时,我没有其他选项编译效果很好。 但是,每当我使用的cmake -DCMAKE_BUILD_TYPE =释放有其停止工作的代码非常具体的部分。

具体而言,我有一个升压斐波那契堆的接口。 我调用这个函数:

narrow_band_.push(myObject);

而这个函数执行以下操作:

inline void myHeap::push (myStruct & c) {
    handles_[c.getIndex()] = heap_.push(c);
}

其中heap_是:

boost::heap::fibonacci_heap<myStruct, boost::heap::compare<compare_func>> heap_;

出于某种原因,heap_size不被修改,因此其余代码不起作用,因为下一个步骤是提取从堆最小,它始终是空的。

在调试模式下,它工作正常。 谢谢您的帮助。

编辑-其他信息我也发现了这个问题:我有一组代码,做简单的数学运算。 在释放模式的结果是不正确的。 如果我只是做COUT几个变量来检查他们的价值观,结果被更改,这仍是不正确,但很奇怪。

Answer 1:

我解决了这个问题。 这很有趣,但在这种情况下,它并没有初始化/定时发布模式的常见问题。 这是return语句是在一对夫妇的功能缺失。 在调试模式下,输出是完美的,但在失败的释放模式。 我曾警告无效,这就是为什么我没有看到过它。



文章来源: CMake Release made my code stop working properly