| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Debug Assertion Failed |
| Автор: Ander 23.2.2004, 06:02 | ||
| Вот, наваял чего-то со списками. При запуске выдаёт таблицу со следующим содержанием, при этом список она всё-таки выводит (здесь файлы можно как-нибудь прикрепить?): Debug Assertion Failed! Program: bla-bla-bla\mylist1.exe File: dbgheap.cLine:1044 Expression: _CrtIsValidHeapPointer(PUserData) Смотрел хелп - так и не понял, в чём дело. Код:
|
| Автор: mr.DUDA 23.2.2004, 15:03 | ||||
| Список кольцевой, так ? Значит,
пройдёт по 10-ти элементам, удалив их, а перед удалением последнего - настроит указатель "x" на значение "next" из последнего элемента, которое указывет на самый первый (уже удалённый !) элемент. Чего тут сделать можно ? Запомнить указатель на первый элемент, и сравнивать "x" не с NULL, а с этим указателем:
|
| Автор: Ander 23.2.2004, 20:14 | ||
Да, теперь всё работает, но я не понимаю:
разве в этом случае x не должен указывать на NULL? |
| Автор: mr.DUDA 23.2.2004, 21:13 | ||||
нет. список кольцевой:
в выделенной строке создаётся элемент списка, в конструктор которого передаётся указатель на первый элемент (base) списка. Далее, из строки "x->next=" получается что все элементы, кроме последнего, настроены своим "next" на следующий элемент (ведь для последнего элемента цикл не выполняется !). Последний элемент настроен указателем "next" на первый элемент, а не на NULL. |
| Автор: Ander 24.2.2004, 01:53 |
| Теперь ясно. Спасибо. |