我有一些軟件,我有一個與icc的紅帽系統工作,它工作正常。當我將代碼移植到使用MIPS運行的IRIX系統時,那麼當出現一些值時,我會得到一些「南」的計算結果。MIPS memcpy問題(我認爲)
我在非redhat系統上沒有任何好的調試器,但我已經追蹤到我的一些陣列在它們中間零星地出現「nan」,這導致我的點積計算返回爲「 NAN「。
看到我無法用調試器追蹤它,我在想這個問題可能與memcpy有關。使用動態分配數組的MIPS編譯器memcpy()函數是否存在任何問題?我基本上使用
memcpy(to, from, n*sizeof(double));
而我不能證明這一點,但我認爲這可能是問題。有一些解決方法嗎?也許sme數據錯位?我如何解決這個問題?
我將檢查gcc是否在那裏。我懷疑它是什麼,因爲這是一個非常有針對性的系統。沒有意識到它可能比另一個警告更多。 它們的數組被定義爲double * 如果我在原始平臺上使用了像totalview這樣的東西並打開了內存調試,它仍然會給我一個答案w.r.t.緩衝區溢出和這樣的權利?也許我會試一試,儘管它給出了正確的答案 – Derek 2010-08-19 18:34:05
@Derek:是的,嘗試諸如totalview或valgrind(這是免費的並且有良好的聲譽)是一個好主意,它可能會發現錯誤原創平臺。不能保證找到錯誤(如果有的話),但通常值得嘗試。 – Gilles 2010-08-19 18:47:49
這是我的賭注 - 目標沒有正確對齊,所以在memcpy工作時,在訪問數據之後並不期待未對齊的數據。 – nategoose 2010-08-19 20:14:25