|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||||||||||||
Ошибки при удалении динамических массивов22.09.2014, 07:32. Показов 8221. Ответов 20
Метки нет (Все метки)
компилируется все нормально, но при вызове delete[] к абсолютно валидным указателям почему то вылетает "HEAP CORRUPTION DETECTED"
![]() town.h Кликните здесь для просмотра всего текста
town.cpp Кликните здесь для просмотра всего текста
main.cpp Кликните здесь для просмотра всего текста
ошибки в town.cpp строки: 38, 42, 57 ошибки в main.cpp строки: 37 (тут немного по другому пишет: "lab2.exe вызвал срабатывание точки останова.")
0
|
||||||||||||||||
| 22.09.2014, 07:32 | |
|
Ответы с готовыми решениями:
20
Инициализация динамических массивов при создании Ошибки при умножении динамических матриц Создание динамических массивов внутри класса: Нарушение прав доступа при чтении "0xbf800000" |
|
9 / 10 / 2
Регистрация: 18.06.2013
Сообщений: 119
|
|
| 22.09.2014, 07:43 | |
|
у тебя указатели не имеют начального адреса, поэтому и вылетает)))
0
|
|
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
| 22.09.2014, 08:21 [ТС] | |
|
0
|
|
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|||
| 22.09.2014, 09:22 [ТС] | |||
|
Добавлено через 6 минут аа все с удалением tmp была та же история... не хватало места под завершающий нуль, так теперь остается только вопрос с удалением массива объектов класса
0
|
|||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|
| 22.09.2014, 09:30 | |
|
GetHelp, если выделяешь память new без скобок, то и удалить нужно delete без скобок. Это стандарт. Компилятор может выделять память под new и new[] совершенно по-разному.
0
|
|
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||
| 22.09.2014, 09:31 [ТС] | ||
|
0
|
||
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|
| 22.09.2014, 10:18 | |
|
GetHelp, конечно, совсем не обязательно...
Это самые страшные ошибки С++. Неопределённое поведение.
1
|
|
|
8 / 8 / 3
Регистрация: 30.04.2013
Сообщений: 25
|
|||
| 22.09.2014, 10:42 | |||
|
Не по теме: Отрицаешь стандарт? Апасный! GetHelp, вы вообще в курсе что существует документ, в котором описано как и что работает в языке? Этот документ носит название "Standard for Programming Language C++". Так вот, в C++ есть операторы new, new[], delete и delete[]. И предполагается что они работаю попарно. new с delete, а new[] с delete[]. Также, предполагается что программист не идиот и будет работать с инструментами, данными ему ,так как с ними нужно работать, а не как ему хочется. Андестенд? P.S. За инструкциями к использованию можно обратиться хотя бы к одной из десятков существующих книг о C++.
0
|
|||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
| 22.09.2014, 10:56 [ТС] | |
|
somebdy, давайте закроем тему про это? меня никто не переубедит я упертый !!! меня сейчас больше интересует ошибка удаления массива экземпляров класса и она к этому уже отношения не имеет...
0
|
|
| 22.09.2014, 11:05 | |
|
0
|
|
| 22.09.2014, 11:40 | |
|
Не по теме: Надеюсь, ТС никогда не будет работать программистом...
0
|
|
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||||
| 22.09.2014, 12:40 [ТС] | ||||||||
|
Добавлено через 3 минуты и нечего вообще оффтопить в моей теме, еще и модер называется
0
|
||||||||
|
8 / 8 / 3
Регистрация: 30.04.2013
Сообщений: 25
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 22.09.2014, 16:24 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сообщение было отмечено GetHelp как решение
Решение
GetHelp, ну смотри.
Есть у нас такая штука
Верить или не верить это конечно дело твоё, но если ты обращаешься за помощью на форум, то, наверное, нужно хоть немножко обращать внимание на то, что тебе советуют. По коду:
Решается очень просто:
Далее:
Решение:
И здесь же:
Но если объект типа town был инициализирован конструктором town() или town(char*), то в вашем варианте name и transport это указатели на один символ, в моем нулевые указатели. Что делать? Выделять память в нужном количестве. Как вариант:
Если в town() и town(char *) инициализировать name и transport нулями то при выводе вылезут нули. Исправим:
Не по теме: Портянка хороошая вышла, длииинная.
2
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||||
| 22.09.2014, 19:30 [ТС] | ||||||||
но даже если допустим я попробовал юзать new char[1], толку от этого 0, в деструкторах у меня уже и так не было ошибок, а массив объектов класса по прежнему удаляется с ошибкой... (точнее не удаляется, все падает на удалении)
0
|
||||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||
| 22.09.2014, 19:48 | ||||
|
Поговорка даже такая есть:
new[] может резервировать чуть больше места (например, небольшой блок до непосредственных данных), где хранит количество выделенных элементов. Обычный new - этого не делает. Если мы попытаемся освободить через delete[] память выделенную через new (без скобок), то delete[] будет пытаться считать это количество, чтобы провести корректное освобождение. Но в этом случае информации о числе элементов не будет. Там будет либо мусор, либо вообще чужие данные. Вот тебе наглядный пример, что может произойти.
1
|
||||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
| 22.09.2014, 19:51 [ТС] | |
|
DrOffset, ок, убедили
![]() Добавлено через 39 секунд и все же, почему возникает ошибка при удалении массива объектов класса???
0
|
|
|
9 / 10 / 2
Регистрация: 18.06.2013
Сообщений: 119
|
|
| 22.09.2014, 19:58 | |
|
0
|
|
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||
| 22.09.2014, 20:01 [ТС] | ||
|
Добавлено через 1 минуту а хотя постойте, уже не возникает никакой ошибки всем спасибо огромное
0
|
||
|
9 / 10 / 2
Регистрация: 18.06.2013
Сообщений: 119
|
||
| 23.09.2014, 07:43 | ||
|
Не стоит благодарности, но с указателями поаккуратнее...
Смотри... массив создал. Просто название массива - это и есть указатель, т.е. *А = А[0]; *(A+1) = A[1]; Добавлено через 5 часов 29 минут
0
|
||
| 23.09.2014, 07:43 | |
|
Помогаю со студенческими работами здесь
20
Динамических массивов Использование динамических массивов
Создание динамических массивов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|