問題解決 - 種。從來沒有真正的問題。看來調試器在騙我。謝謝[/編輯]operator + = yield 0
我有一個奇怪的問題,我一直無法解決迄今。我有一個私有類成員
private:
float *_histVals;
這是在構造函數如下初始化:
// allocate memory for the histogram bins
size_t hSize = binsPerChan*binsPerChan*binsPerChan;
this->_histVals = new float[ hSize ];
for (size_t i = 0; i < hSize; ++i)
this->_histVals[i] = 0.0f;
在我想補充一點,以一定的數組元素通過以下方式以後的程序:
this->_histVals[ hIndex ] += imgFrac;
這裏,imgFrac是大小爲1.0 * e-5的浮點值,並且_histVals[ hIndex ]
元素的當前值爲零。但是調試器顯示在執行該行後,該值仍然爲零。
我懷疑浮點精度的問題,但當我嘗試與本地浮點變量相同的東西,它完美的作品。所以它必須與數組本身有關。但我不知道這可能是什麼。我也檢查了數組範圍內的索引。
任何可能導致問題的建議? 謝謝
您是否嘗試打印該值?沒有人是完美的,即使調試者不是。 – 2011-06-05 19:06:28
您是否正在編譯器優化啓用?你在'+ ='之後試過'printf'這個'this - > _ histVals [hIndex]'的值嗎? – 2011-06-05 19:07:16
如果你正在使用指針並且有bug,那麼你的程序的所有部分都會出現奇怪的行爲。您能否向我們展示兩個完整的程序,一個顯示錯誤,另一個顯示正確的行爲?兩者應儘可能簡單。在製作這些例子的過程中,你可能會發現什麼是錯的。 – 2011-06-05 19:10:37