我有一些软件,我有一个与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