| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Ошибка памяти при очистке памяти |
| Автор: MaxWave 27.7.2006, 18:38 | ||
Никак не пойму, что я делаю не правильно? При удалении tempList ошибка о повреждениии памяти:
|
| Автор: vinter 27.7.2006, 19:20 | ||||
Попробуй вместо этого
Поставить вот это:
|
| Автор: NextAlex 28.7.2006, 19:48 | ||
думаю так должно заработать - ты пытался освободить еще не выделенную память. При первом вызове метода Add у тебя не выделена память ни под один из массивов и оба указателя (tempList и mlist) равны NULL. а вообще, насколько я понял, ты пытаешься сварганить нечто вроде динамического массива, который уже и без того реализован в stl и называется vector |
| Автор: Damarus 28.7.2006, 20:15 | ||
Не имеет значения. По стандарту delete допускает передачу нулевого указателя |
| Автор: MaxWave 29.7.2006, 12:06 | ||||
| Всем спасибо за ответы! 2vinter Это динамические массивы указателей (ДМУ), поэтому так и должно быть 2NextAlex Про вектора, списки я заню в STL, но мне надо было реализовать это вручную (задание такое) Спасибо за исправленный код, все дело было в
а надо было
выход за пределы массива. Да, подучиться мне стоит. Проблема в том, что я опускаю "законы" программирования, корректность. Надо искоренить из сознания - если код работает, не значит, чо он корректный. Если где нибудь такая лит-ра, где акцекнтированио на этом внимание - описаны нормы написания кода? (т.е. так лучше не делать, а здесь лучше так). Срочно надо повышать свой уровень, иначе мне ничего не свтит |
| Автор: DukeCpp 29.7.2006, 13:33 |
| Книжка попроще: С. Уэллин "Как не надо программировать на С++" (111 нерабочих и 3 рабочих программы или почему 2+2 = 5986). Довольно занятное, лёгкое чтение. Посерьёзнее и, конечно, классика жанра: Саттер Г., Александреску А. Стандарты програмирования на С++: 101 правило и рекомендация. Хорошая, глубокая книга, небольшая по объёму, но ёмкая по информации. Ну и, конечно, Мейерс: Effective C++, More Effective C++. Без комментариев, просто must have and been read |
| Автор: NextAlex 29.7.2006, 18:43 | ||
по стандарту возможно и допускает, но на практике это почти всегда вызывает ошибку в работе программы - сам наступал на эти грабли. |
| Автор: MaxWave 29.7.2006, 19:52 |
| 2DukeCpp Огромное спасибо за список литературы! |
| Автор: Daevaorn 29.7.2006, 22:02 | ||
У вас мамонто-подобный компилятор |
| Автор: NextAlex 31.7.2006, 09:03 |
| Daevaorn, ну если GCC теперь считается мамонтоподобным ... может тогда Linux - это тоже что-то совершенно несуразное ? |
| Автор: Daevaorn 31.7.2006, 09:38 |
| NextAlex, давай код и версию gcc! delete( 0 ) абсолютно легален. |
| Автор: NextAlex 31.7.2006, 10:33 |
| Daevaorn, ты знаешь, я начал писать пример и понял что был неправ, "delete NULL" ошибку не вызывает - ошибка появляется если указатель не проинициализирован, что в принципе логично ... так что приношу свои извинения |