Я получаю ошибку sysmalloc ниже при запуске программы на C.C Сбой ошибки Sysmalloc
malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *)
&((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd))))
&& old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)
((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))
+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1)))
&& ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Программа прекрасно работает при использовании Int массив
int(*M)[cnt] = malloc(sizeof(int[cnt][cnt]));
но показывает вышеуказанную ошибку для знакового длинного междунар. В программе нет других изменений.
signed long int(*M)[cnt] = malloc(sizeof(signed long int[cnt][cnt]));
В чем может быть причина? Это отлично работало при использовании массива int. Следовательно, не должно быть проблемой управления памятью, как указано здесь C Malloc assertion failure
Благодарности
Что такое 'cnt'? Вы используете 32 или 64-битную систему? Что такое 'sizeof (int)' и 'sizeof (long)' в вашей системе? – mch
Возможный дубликат [Почему я получаю сообщение об ошибке C malloc?] (Http://stackoverflow.com/questions/2987207/why-do-i-get-ac-malloc-assertion-failure) –
@mch: cnt представляет собой целочисленную переменную, сохраняющую некоторое значение. Я на 64-битной системе. 'sizeof (int)' is 4 и 'sizeof (long)' равно 8. – re3el