C-Array إلى NSDATA والعودة
سؤال
أحاول حفظ مجموعة أسلوب C من الهياكل Vertex3D إلى كائن NSDATA واحصل عليها عند إعادة تحميل التطبيق:
NSData *vert = [NSData dataWithBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];
ثم يتم حفظ هذه البيانات وحاولت قراءةها مرة أخرى إلى صفيف C.
vertices = malloc(sizeof(Vertex3D) * NUM_OF_VERTICES);
[vert getBytes:&vertices length:(sizeof(Vertex3D) * NUM_OF_VERTICES)];
النتائج أعلاه في "exc_bad_access" تليها:
malloc: *** error for object 0x48423c0: pointer being freed was not allocated
أنا جديد جدا في البرمجة بحيث يكون هناك بعض مبدأ إدارة الذاكرة الأساسية أنا غير مدركين. لقد تحققت من أن NSDATA المحملة مطابق للواحد المحفوظ، لكن من الواضح أن الانتقال من مجموعة C إلى NSDATA (والظهر) ليس كما كنت أقصد.
المحلول
من المستحيل معرفة ذلك دون رؤية إعلانك ل vertices
متغير، ولكن باستخدام &vertices
ربما يكون مخطئا في الرمز الذي تسرده في سؤالك. إذا vertices
هو مجموعة ج، ثم هي بالفعل مؤشر ويجب عليك حذف مشغل العنوان &
.
لا تنتمي إلى StackOverflow