0

我有一个结构,其中有一个动态数组。我已经定义了其中的两个结构。

我在第一个结构中填充数组,然后使用类似的行

memcpy(R->v, A->v, A->n*sizeof(double)

其中 v 是已动态分配的数组,n 是条目数。

如果重要的话,R 和 A 是同一类型。

问题是,这些值没有被正确复制到 R 中。知道为什么吗?当我尝试在 totalview 中调试它时,memcpy 进入一个名为“very_huge_loop”的函数,但没有抛出异常或任何东西。

该数组的长度约为 188k 双倍。

谢谢

4

1 回答 1

1

可能是内存对齐。一些架构不喜欢多字节值,喜欢double从任意字节地址开始。当您分配数组内存时,您可能希望使用类似的函数memalign()而不是malloc(). 如果您正在使用,new double[n]那么它应该已经正确对齐。

于 2010-06-28T21:43:40.210 回答