我想复制2个矩阵。对于循环(行和列),通过2个元素逐个复制,经过几次数学运算并复制后,最终结果是正确的,而使用“ memcpy”时,最终结果在小数位错误。代码如下。
printSchema(df)
root
|-- col1: string (nullable = true)
|-- trans_dtime: timestamp (nullable = true)
这是正确的结果:Matrix Correct 这是输出:output when using memcpy
答案 0 :(得分:2)
您的L
和L_original
是2D矩阵,由指向分别分配的1D向量的指针数组组成。这些内存地址可能不在连续的内存空间中。因此,您不能使用单个memcpy
复制所有子向量。
您将必须使用for循环在每个L [i]和L_original [i]之间应用memcpy
。
此外,您的sizeof()
运算符使用不正确。您需要复制的是数据的字节长度(一维子向量的字节长度),而不是指针的长度。您需要类似
for(int i=0; i<nU; i++)
memcpy(L[i],L_original[i], sizeof(double)*nF);