Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2013, 21:15   #31
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
- в конструкторе создаётся двумерный динамический массив matrix[][] c размером 2x2 (nrows x ncols)

- при нажатии на кнопку:

1) удаляется массив matrix[][] размера nrows x ncols
зачем он создается в конструкторе, я же написал много раз, что этого делать не стоит, скорее всего. Так зачем?
rrrFer вне форума Ответить с цитированием
Старый 17.01.2013, 23:02   #32
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
зачем он создается в конструкторе, я же написал много раз, что этого делать не стоит, скорее всего. Так зачем?
Простой пример. Я запустил приложение. Но не загрузил значения в матрицу. Завершил приложение.

Я хотел бы чтобы массив matrix[][] был доступен всегда. Для данного приложения достаточно выделить память перед загрузкой в QTableWidget и освободить после.

Просто логично если matrix будет оставаться неосвобождённым до конца работы приложения. Чтобы можно было бы с ним работать. То есть загрузил один раз из файла. А потом меняешь, например, значения вручную в матрице (QTableWidget) и все изменения и в matrix отражаются.

В данном случае можно согласен. Можно и без выделения в конструктроре и освобождения в деструкторе обойтись.

Последний раз редактировалось 8Observer8; 17.01.2013 в 23:10.
8Observer8 вне форума Ответить с цитированием
Старый 17.01.2013, 23:09   #33
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Простой пример. Я запустил приложение. Но не загрузил значения в матрицу. Завершил приложение.
В этом случае тебе вообще ненадо выделять память, и освобождать, соответственно тоже. Если бы ты внимательно читал ответы не пришлось бы повторять. Я хотел предложить тебе читать внимательнее еще вчера )
Цитата:
Сообщение об ошибке (которые ты выше привел) получаешь, наверное, когда метод loadMatrixFromXmlFile не вызывается ниразу (при этом память не выделяется вообще) и при попытки освободить ее ты можешь такое получить.
остальную часть сообщения и пути решения смотри выше.
rrrFer вне форума Ответить с цитированием
Старый 17.01.2013, 23:24   #34
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

кстати, если очень хочется сделать именно так как ты делаешь - то вместо выделения памяти лишний раз можешь присвоить указателю nullptr. В деструкторе проверяешь были ли выделена память (указатель не равен nullptr) и освобождаешь.
-----
но нехорошо это в твоем случае ИМХО. У тебя есть данные в массиве и есть данные в таблице.
Цитата:
меняешь, например, значения вручную в матрице (QTableWidget) и все изменения и в matrix отражаются.
ты дублируешь данные и выполняешь лишние операции, это плохо.

Цитата:
То есть загрузил один раз из файла.
вот с твоим этим говнокодом тебе еще не хватает следить сколько раз юзер загрузил файл (ты уже начал вставлять костыли на случай если он не стал загружать файл вовсе, а выше я писал что если он загрузит его несколько раз - у тебя утечет память, опять же, читай внимательнее)

Последний раз редактировалось rrrFer; 17.01.2013 в 23:29. Причина: добавил
rrrFer вне форума Ответить с цитированием
Старый 18.01.2013, 01:35   #35
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
кстати, если очень хочется сделать именно так как ты делаешь - то вместо выделения памяти лишний раз можешь присвоить указателю nullptr. В деструкторе проверяешь были ли выделена память (указатель не равен nullptr) и освобождаешь.
Это я попробую.

Цитата:
Сообщение от rrrFer Посмотреть сообщение
У тебя есть данные в массиве и есть данные в таблице.

ты дублируешь данные и выполняешь лишние операции, это плохо.
Я не пойму, почему плохо. Загрузил я данные из файла в matrix. Отобразил их в QTableWidget. Потом вручную изменил в таблице. Нажал кнопку - расчёт какой-нибудь. После нажатия у меня данные считались из таблицы в matrix и произошёл расчёт. То есть во время работы приложения matrix всегда актуален (синхронизирован с тем, что я вижу на экране)

Цитата:
Сообщение от rrrFer Посмотреть сообщение
я писал что если он загрузит его несколько раз - у тебя утечет память, опять же, читай внимательнее)
Я подробно описал в сообщении № 30 подробно. Там нет утечки памяти, так как память освобождается каждый раз после отрытия файла.

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Вот как ситуация выглядит на данный момент:

- в конструкторе создаётся двумерный динамический массив matrix[][] c размером 2x2 (nrows x ncols)

- при нажатии на кнопку:

1) удаляется массив matrix[][] размера nrows x ncols

2) из файла читаются размеры матрицы: nrows и ncols. Выделяется память для массива matrix[][]. Элементы матрицы инициализируются из файла

- когда мы опять нажимаем кнопку - случаются события 1) и 2)

- когда мы закрываем приложение, то срабатывает деструктор, который освобождает память от массива matrix[][]

Последний раз редактировалось 8Observer8; 18.01.2013 в 01:43.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что лучше использовать? 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