![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#21 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
Каждый объект Qt хранит ссылки на дочерние элементы в деструкторе уничтожает их. На этом сборка мусора заканчивается. |
|
![]() |
![]() |
![]() |
#22 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#23 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]() |
![]() |
![]() |
![]() |
#24 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Понял почему. Матрицу нужно в кострукторе окна создавать. Но ведь до загрузки я не знаю размер.... В общем думать нужно. Сейчас не соображу, но проблему понял.
|
![]() |
![]() |
![]() |
#25 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Вот такое решение придумал. Инициализировать размеры матрицы в конструкторе окна.
Код:
|
![]() |
![]() |
![]() |
#26 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#27 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]()
Поясните, пожалуйста, я не понял
Я такую ошибку грубую совершил! Я же память по минимуму выделил сейчас 2x2. А если я матрицу 10x10 считаю из файла ![]() Решение такое. Нужно перед заполнением матрицы из файла, удалить матрицу выделенную в конструкторе (поумолчанию 2x2). И заново выделить память требуемого размера (размер указан в файле). |
![]() |
![]() |
![]() |
#28 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]() Цитата:
кстати, ты можешь использовать вектор чтобы избежать утечек. |
|
![]() |
![]() |
![]() |
#29 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
![]()
долго не мог понять что за таинственная проблема тебя преследует. Посмотрел твой код и кажется догадался.
Тебя смущает что ты выделяешь память в loadMatrixFromXmlFile, но это нормально. Если память можно сразу освободить - освобождай и сократи области видимости своих массивов (эти массивы по-любому не должны быть свойством класса). Освобождать память в деструкторе тебе смысла нет. Он вызывается 1 раз при уничтожении объекта, но за время жизни объекта метод loadMatrixFromXmlFile может быть вызван несколько раз, при этом ты будешь получать утечки (если не освободишь там же память). Сообщение об ошибке (которые ты выше привел) получаешь, наверное, когда метод loadMatrixFromXmlFile не вызывается ниразу (при этом память не выделяется вообще) и при попытки освободить ее ты можешь такое получить. Ты можешь пересмотреть архитектуру и объявлять массивы внутри функции, перед возвратом из нее освобождай память. Ты можешь использовать динамические списки вместо массивов это гораздо удобнее. Последний раз редактировалось rrrFer; 17.01.2013 в 18:33. Причина: орфография |
![]() |
![]() |
![]() |
#30 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,328
|
![]() Цитата:
Если я создам множество объектов 'LoadMatrixMainWindow' ничего страшного не будет, так как для каждого из них будет вызван деструктор Вот как ситуация выглядит на данный момент: - в конструкторе создаётся двумерный динамический массив matrix[][] c размером 2x2 (nrows x ncols) - при нажатии на кнопку: 1) удаляется массив matrix[][] размера nrows x ncols 2) из файла читаются размеры матрицы: nrows и ncols. Выделяется память для массива matrix[][]. Элементы матрицы инициализируются из файла - когда мы опять нажимаем кнопку - случаются события 1) и 2) - когда мы закрываем приложение, то срабатывает деструктор, который освобождает память от массива matrix[][] Вот фрагменты из кода, которые демонстрируют описанное выше: Код:
Код:
Код:
Последний раз редактировалось 8Observer8; 17.01.2013 в 20:33. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Что лучше использовать? | Lindemann66 | C/C++ Базы данных | 11 | 01.09.2011 10:21 |
3d графики: что вообще есть и что лучше использовать | Krasi | Общие вопросы по Java, Java SE, Kotlin | 1 | 09.05.2011 14:41 |
MS рекомендует использовать AutoComplete в GUI | Glen | Свободное общение | 0 | 04.04.2011 22:43 |
Обработка сигнала - что использовать? | gooff | Компьютерное железо | 3 | 02.07.2008 12:13 |
Обработка сигнала - что использовать! | gooff | Помощь студентам | 4 | 22.06.2008 20:57 |