malloc.c: ошибка 3074?

Когда я пишу программу на C, я столкнулся с проблемой, которая заключается в следующем:

malloc.c:3074: 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.

Пожалуйста, помогите мне исправить это, спасибо заранее!

 Charlie Epps08 июл. 2009 г., 15:24
Я просто использую метод malloc (), чтобы получить немного памяти. Если я прокомментирую эту строку, этот проблом не произойдет.
 Eugene Bujak08 июл. 2009 г., 15:21
Можете ли вы воспроизвести это на небольшом примере? Примерно десять строк кода.
 Nick Dandoulakis08 июл. 2009 г., 15:27
попробуй использовать много утверждений. Не объединяйте все эти логические тесты в одно утверждение,if Вы хотите легко найти проблему.
 Charlie Epps08 июл. 2009 г., 15:26
Строка, как эта char * seq = malloc (1000 * sizeof (char)); Конечно, есть еще такие строки. Но я не знаю, где это.
 sharptooth08 июл. 2009 г., 15:20
Похоже на кучу неправильного использования. Вы должны предоставить фрагмент, который разоблачает это.

Ответы на вопрос(1)

Решение Вопроса

что администрация, сохраненная для выделения памяти, была повреждена. Я думаю, что у вас есть что-то вроде переполнения буфера где-то до того, как эта ошибка возникает.

Поскольку ошибка является результатом более ранней проблемы (при условии, что я прав), это может быть несколько трудной проблемой для исправления. Возможно, такой инструмент, как valgrind, поможет вам обнаружить неправильные записи в память. Если у вас есть небольшая программа, которая демонстрирует проблему, я бы предложил добавить этот код к вашему вопросу.

 Charlie Epps08 июл. 2009 г., 15:30
Моя программа немного большая, я не могу отобразить все коды здесь.
 Charlie Epps08 июл. 2009 г., 15:28
все же разрешите поблагодарить вас.

Ваш ответ на вопрос