如何将 3d 指针存储到另一个 3d?我已经尝试了以下方法:
void somefunction(ArrayBlock **** b1, int noOfBlocks, ArrayBlock **** b2){
memcpy((&b2), (&b1), noOfBlocks*sizeof(ArrayBlock));
}
这给了我在 gdb 中的以下错误:
[Inferior 1 (process 8528) exited with code 030000000005]
b1 和 b2 都在 main 函数中分配了内存,如下所示:
ArrayBlock ***b2;
b2 = malloc(max_x * sizeof(ArrayBlock **));
for (i = 0; i < max_x; ++i)
{
b2[i] = malloc(max_y * sizeof(ArrayBlock *));
for (j = 0; j < max_y; ++j)
{
b2[i][j] = malloc(max_z* sizeof(ArrayBlock));
}
}
解决方案:
我想因为我的 3D 指针(数组)的初始化是不连续的,所以一个 memcpy 是不够的。
所以这就是我所做的:
int i2, j2;
for(i2 = 0; i2 < max_x; i2++){
for(j2 = 0; j2 < max_y; j2++){
memcpy(&(*b2)[i2][j2][0], &(*b1)[i2][j2][0], max_z*sizeof(ArrayBlock));
}
}
我认为这一次它确实有效,感谢那些帮助我的人。