0
我正在一個項目中,我必須在託管代碼和非託管代碼之間進行接口。我目前在math.h中遇到了一個奇怪的問題。math.h函數返回無效結果與C++/clr
一些功能將浮點數將返回0(例如:2.1219957934356005e-314)和隨機...
例如:
int error = 0;
int success = 0;
for (int i = 0; i < 1000; ++i)
{
double test = std::sqrt(9.01);
if (test < 2 || test > 4)
{
++error;
}
else
{
++success;
}
}
一般我會得到錯誤= 1000與斷點,我我會重試一次,再次得到1000錯誤和有些時候我會得到1000成功...
我看到沒有任何錯誤的反彙編和進入寄存器(壞結果除外)。
對於上下文:該代碼被編譯爲64位的dll,並被C#使用。這個應用程序確實是多線程的。
有什麼想法?
您提供應該不會產生這樣的錯誤代碼。如果你有線程代碼,你將不得不顯示相關部分。在沒有看到代碼的情況下,很難說出什麼會導致這樣的錯誤。 – CoryKramer 2015-02-17 22:33:03
在測試更改時是否鎖定線程?/已初始化 – 2015-02-17 22:34:12
我有很多線程,這個線程已經在兩個不同的線程上測試過,結果相同(我沒有任何相關的代碼可以顯示)。我不認爲我需要鎖定,因爲在這個測試中所有的變量都是本地的,沒有共享內存。除非math.h使用一些靜態和全局變量? – Nic007 2015-02-17 22:37:29