в чем проблема в malloc.c 3096 - PullRequest
0 голосов
/ 03 июля 2011
> 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.

Ошибка, с которой я столкнулся, когда я запускаю свою программу на c, которая использует целочисленные 3D-указатели и обычные переменные типа int

Ответы [ 2 ]

4 голосов
/ 03 июля 2011

В malloc нет проблем, ошибка где-то в вашем собственном коде.

2 голосов
/ 03 июля 2011

Скорее всего, вы перезаписали память непосредственно перед или после выделенного ранее блока памяти.Или вы освободили блок, а затем все равно написали в него.

Также возможно, что вы выделили слишком много памяти, не освобождая ее, или слишком мало (malloc не любит отрицательные числа).Обычно эти последние 2 не вызывают утверждения, но у каждой платформы есть свои причуды.

Есть так много способов возиться с головой Маллока ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...