Callin 'C من حادث تحطم Lua أثناء إعادة التخصيص
سؤال
لقد حصلت على خطأ مجنون في هذا الحلقة
matr=realloc(matr, newmax*sizeof(matr*));
for (i=0; i<newmax; i++){
matr[i]=realloc(matr[i], newmax*sizeof(int));
}
MATR هو مجموعة متعددة الأبعاد: int ** MATR. أحتاج إلى تغيير حجم العمود والصف. قم بتغيير حجم الخط الأول وتغيير حجم الحلقة من كل صف. عملت بشكل جيد في ج. الآن أنا أعمل على مكتبة لوا وتحطمها هنا. compilin 'يعمل بشكل جيد كذلك. لكن الاتصال من لوا تحطم مع
lua: malloc.c:3552: mremap_chunk: Assertion `((size + offset) & (mp_.pagesize-1)) == 0' failed.
ليس لدي أي فكرة لعنة لأنها تعمل بشكل جيد باستخدامها في ج.
المحلول
بعد الاتصال realloc
, ، محتويات الجزء المخصص حديثا غير محددة. هذا يعني ذلك ثم الاتصال realloc
قد تفشل في الصفوف الجديدة لأنه يحاول إعادة تخصيص مؤشر غير صالح.
يمكنك استخدام realloc
على الصفوف القديمة و malloc
على الصفوف الجديدة لإصلاح هذا. أو يمكنك صفر الجزء الجديد بعد الأول realloc
, ، ثم ستعمل حلقتك كما هي:
matr=realloc(matr, newmax*sizeof(matr*));
for (i=oldmax; i<newmax; i++)
matr[i] = NULL;
for (i=0; i<newmax; i++){
matr[i]=realloc(matr[i], newmax*sizeof(int));
}
لا تنتمي إلى StackOverflow