【发布时间】:2013-02-17 17:34:53
【问题描述】:
我需要你的帮助!
我喜欢复制这样的结构:
typedef struct PackageObject_s {
long **vertex; // vertices
long num_vertex; // count of vertices
long objectType; //
REAL r; //
long bottom[3]; // bounding box bottom vector
long top[3]; // bounding box top vector
long *start; //
REAL coverage; //
} PackageObject __attribute__ ((aligned));
我是这样尝试的:
static inline void PackageObject_copy(PackageObject *dst, const PackageObject *src) {
dst->num_vertex = src->num_vertex;
dst->objectType = src->objectType;
dst->r = src->r;
vec_assign3l(dst->bottom, src->bottom);
vec_assign3l(dst->top, src->top);
// TODO copy **vertex ???
dst->coverage = src->coverage;
dst->coverage = src->coverage;
}
我该如何解决这个问题?
提前感谢您的帮助!!
更新 - 我对 vertex 进行深度复制的解决方案 - 感谢所有帮助:
dst->vertex = (long *)malloc(dst->num_vertex * 3 * sizeof(long));
for (long i=0; i < src->num_vertex; i++) {
dst->vertex[i] = (long)malloc(3*sizeof(long));
memcpy(dst->vertex[i],src->vertex[i],3 * sizeof(long));
}
【问题讨论】:
-
你需要复制**顶点?!
-
感谢所有回答(@Sparky、@Foon、@eznme)。我明白了:-)
` dst->vertex = (long *)malloc(dst->num_vertex * 3 * sizeof(long)); for (long i=0; i num_vertex; i++) { dst->vertex[i] = (long)malloc(3*sizeof(long)); memcpy(dst->vertex[i],src->vertex[i],3 * sizeof(long)); }`
标签: c pointers struct deep-copy