我的结构中包含动态数组。我已经定义了其中两个结构。
我在第一个结构中填充数组,然后使用类似
的行memcpy(R-> v,A-> v,A-> n * sizeof(double)
其中v是已动态分配的数组,n是条目数。
如果重要,R和A的类型相同。
问题是,这些值不是被复制到R中的原因。任何想法为什么?当我尝试在totalview中调试它时,memcpy会进入一个名为“very_huge_loop”的函数,但不会抛出任何异常或任何内容。
阵列长度约为188k。
由于
答案 0 :(得分:1)
可能是内存对齐。有些架构不喜欢像double
这样的多字节值来启动任意字节地址。分配数组内存时,您可能希望使用memalign()
之类的函数而不是malloc()
。如果您使用new double[n]
,那么它应该已经正确对齐。