![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Oo
Форумчанин
Регистрация: 10.10.2009
Сообщений: 350
|
![]()
Пишу класс для хранения чисел в битовой карте.
Среда - VS2010, консольное приложение С++. Она представлена массивом char, если K-тое число в карте есть, K-й бит равен единице. Программа выполняется нормально, но при завершении, в районе return 0; вылетает ASSERT нагуглил, что это может быть связано с delete. delete[] у меня выполняется в трех местах - применительно к char*bitmask: 1) деструктор 2) добавление памяти (создать новый массив, удалить старый, переназначить указатель на новый) 3) копирование по оператору присваивания - удаление старой памяти (аналогично добавлению памяти) Последний раз редактировалось Namolem; 14.09.2011 в 21:38. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 27.02.2011
Сообщений: 46
|
![]()
Пришлите куски кода, где есть delete
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Приложи исходник.
|
![]() |
![]() |
![]() |
#4 |
Oo
Форумчанин
Регистрация: 10.10.2009
Сообщений: 350
|
![]()
Добавил код в аттаче
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Ошибка в методе union. Он возвращает по ссылке this (объект, для которого его вызвали); при возвращении по ссылке копирования не происходит - следовательно, получается два идентичных объекта (делящих указатель на одну и ту же битовую карту). Оба объекта при завершении программы уничтожаются, и при удалении второго возникает ошибка, поскольку его карту уже удалили.
Короче, в методе union вместо return *this; должно быть написано return *resultSet; |
![]() |
![]() |
![]() |
#6 |
Oo
Форумчанин
Регистрация: 10.10.2009
Сообщений: 350
|
![]()
да, точно, спасибо
писал затычку, чтобы не выдавало ошибки, а в конце поменять забыл( |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Да, к слову, возвращать по ссылке объекты, созданные с помощью new - очень плохая идея. После выхода ссылки из области видимости память, выделенная для объекта, не освобождается автоматически, и это приходится делать вручную извращенным способом.
|
![]() |
![]() |
![]() |
#8 |
Oo
Форумчанин
Регистрация: 10.10.2009
Сообщений: 350
|
![]()
Вот опять ошибка, три раза просмотрел и ничего не увидел.
Опять же ошибка при конце программы |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Непонятная проблема | CrazyDude | Работа с сетью в Delphi | 2 | 02.04.2010 00:35 |
Непонятная проблема с циклом | RIO | Общие вопросы Delphi | 3 | 31.01.2010 23:29 |
Непонятная проблема. | ROD | Компьютерное железо | 17 | 05.09.2009 11:09 |
проблема с печатью. непонятная ошибка. | фЁдОр | Общие вопросы Delphi | 10 | 04.06.2009 13:37 |