我有一个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几个变量来检查他们的价值观,结果被更改,这仍是不正确,但很奇怪。