【发布时间】:2010-06-28 21:34:30
【问题描述】:
我有一个结构,其中包含一个动态数组。我已经定义了其中的两个结构。
我在第一个结构中填充数组,然后使用类似的行
memcpy(R->v, A->v, A->n*sizeof(double)
其中v是动态分配的数组,n是条目数。
如果重要的话,R 和 A 是同一类型。
问题是,这些值没有被正确复制到 R 中。知道为什么吗?当我尝试在 totalview 中调试它时,memcpy 进入了一个名为“very_huge_loop”的函数,但没有抛出异常或任何东西。
数组的长度约为 188k 双倍。
谢谢
【问题讨论】:
-
memcpy 对于您描述的情况应该可以正常工作,尽管您错过了一些可能会更清楚的细节(数组的类型,它们的大小是否相同?您是否在两者中分配了足够的内存保存 n*8 字节?等)。它可能工作正常并且调试器向您显示不正确的值(例如,如果您正在调试发布版本,它可能无法正确显示这些值)。还要检查 A->v 在复制之前是否包含正确的值——也许在你复制之前有什么东西破坏了它?