2010-06-28 34 views
0

我有一个结构中有一个动态数组。我已经定义了这些结构中的两个。memcpy是否适用于结构中的大型数组?

我填写所述第一结构的阵列,然后使用像

的memcpy(R-> V,A-> V,A-> N *的sizeof的线(双)

其中v是已动态分配,并且n阵列是条目的数量。

R和A表示与上述相同类型的,如果该事项。

的问题是,这些值不被properyl复制到R.不限想法为什么?当我尝试在totalview中调试它时,memcpy进入一个名为“ve”的函数ry_huge_loop“,但没有例外或任何东西被抛出。

阵列的长度约为188k的两倍。

谢谢

+0

对于你描述的情况,memcpy应该可以正常工作,尽管你错过了一些可能会更清晰的细节(数组类型,它们是相同的大小吗?你是否分配了足够的内存来存放n * 8字节?等)。它有可能工作正常,调试器显示的值不正确(例如,如果您正在调试发布版本,则可能无法正确显示值)。还要检查A-> v是否在拷贝之前包含正确的值 - 在拷贝之前可能有东西正在破坏它? – 2010-06-28 21:43:46

回答

1

它可能是内存对齐。一些体系结构不喜欢像任何字节地址开始的多字节值,如double。分配阵列存储器时,可能需要使用memalign()等功能,而不是malloc()。如果您使用new double[n]那么它应该已经正确对齐。