में पॉइंटर प्वाइंट के साथ संरचना की गहरी प्रतिलिपि मुझे आपकी मदद चाहिए!सी
मैं इस तरह एक struct कॉपी किए जाने वाले:
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
की deepcopy के लिए मेरे समाधान - सभी मदद के लिए THX:
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));
}
आपको ** vertex की प्रतिलिपि बनाने की आवश्यकता है? – amrfaissal
सभी उत्तरों के लिए धन्यवाद (@ स्पार्की, @ फ़ून, @eznme)। मुझे यह मिला :-)
'dst-> vertex = (long *) malloc (dst-> num_vertex * 3 * sizeof (long)); के लिए (लंबा i = 0; i < src-> num_vertex; i ++) {dst-> vertex [i] = (लंबा) malloc (3 * आकार (लंबा)); memcpy (dst-> vertex [i], src-> vertex [i], 3 * आकार (लंबा)); } ' – romi1013