سؤال

أحاول حفظ مجموعة أسلوب 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 هو مجموعة ج، ثم هي بالفعل مؤشر ويجب عليك حذف مشغل العنوان &.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top