![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 16.07.2015
Сообщений: 31
|
![]()
Здравствуйте, хотел уточнить, не будет ли в данном случае многократное использование
оператора new плохо сказываться на работе программы. Имеется цикл do while c частотой 10 раз в секунду. 1. Первый вариант Bitmap * F_Bitmap; gdiBitmapData - это ссылка на массив пикселей. Он периодически меняет значения. Color TheColor; //Цвет int IMAGE_W = 800; // Ширина изображения в пикселях IMAGE_W = 600; // Высота изображения в пикселях Код:
Но есть способ делать так: 2. Второй вариант Код:
Как думаете по производительности будет ли разница меду способами 1 и 2 ? Если постоянно делаю new Bitmap, то памяти не будет больше потребляться, чем в варианте 2 ? Вообще после new память освобождается? |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 16.07.2015
Сообщений: 31
|
![]()
Спасибо, то есть получается что после
F_Bitmap = new Bitmap(800,600,stride_size,f_format ,gdiBitmapData); память ранее выделенная под F_Bitmap остается в оперативной памяти программы и оперативная память постоянно растет? А если я буду делать в цикле так, это нормально? if(F_Bitmap) delete F_Bitmap; F_Bitmap = new Bitmap(800,600,stride_size,f_format ,gdiBitmapData); А по производительности эти два варианта как-то будут отличаться? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
![]()
На чём пишете? Что есть Bitmap? А то вот такая штука бывает: http://www.vsokovikov.narod.ru/New_M...bitmapbits.htm
|
![]() |
![]() |
![]() |
#5 | |
gamer
Участник клуба
Регистрация: 09.05.2015
Сообщений: 1,549
|
![]()
Если есть new - должен быть delete.
Цитата:
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/ В ожидании Кеши... |
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
![]()
F_Bitmap - это просто указатель на объект класса Bitmap, если мы его изменим, предварительно не сохранив куда-то, чтоб потом можно было освободить память через delete, то будет утечка.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 16.07.2015
Сообщений: 31
|
![]()
Спасибо всем. Это просто для примера все.
Я понял, что если есть new, то должен быть delete. Но использование в цикле new .... delete это не есть хороший стиль, если имеются альтернативные варианты или же это нормальная практика? Тут суть в том, что в ЦИКЛЕ либо 1). методами класса перезаписывать массив-переменную класса, либо 2). создавать через new c предварительным delete объект класса, с передачей в него уже готового массива-переменной. Является ли вариант 2 не приемлемым? Или не хорошим стилем. Или это все мелочи, и то и то нормально?) Последний раз редактировалось robix; 23.07.2015 в 21:06. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 01.06.2015
Сообщений: 497
|
![]()
Если Вы просто загружаете изображение в Bitmap, то переписывать попиксельно тут не вариант (можете сами проверить, сколько по времени занимает один вариант и второй вариант). В классе Bitmap должны быть методы, которые позволяют загружать изображение целиком, не думаю, что только конструктор позволяет это сделать.
Но я так и не понял, какое отношение к этому всему имеет new и delete?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
|
![]() |
![]() |
![]() |
#9 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Какова цель таких действий? Для чего тебе это понадобилось? Может лучше использовать какой-нибудь ImageList для кучи картинок? Цитата:
А пока непонятно что тебе надо, но работа попиксельно будет медлительна.
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#10 |
gamer
Участник клуба
Регистрация: 09.05.2015
Сообщений: 1,549
|
![]()
Как только объект не нужен становится и указатель на него теряется, следует использовать delete.
Если уж совсем непонятно, можно создать "временный" указатель, копировать туда основной, а на следующей итерации цикла удалять старый объект через "временный" указатель. Но это такой способ, когда уж совсем ничего не помогает.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/ В ожидании Кеши... |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нужен ли RAII в данном случае | pproger | Общие вопросы C/C++ | 3 | 01.12.2012 20:15 |
Как работает fwrite() в данном случае ? | Sergey S | Общие вопросы C/C++ | 2 | 30.05.2012 07:22 |
Непонятно: зачем делать декларацию функции в данном случае? | Oleg_SK | Общие вопросы C/C++ | 0 | 17.07.2010 09:36 |
использование условного оператора в теле оператора цикла с условием | машко | Помощь студентам | 2 | 21.06.2009 23:55 |
Delphi, рекурсия, как сделать все возможные N-ки чисел (сколько столбцов такая N-ка,в данном случае 3)? | domik | Помощь студентам | 5 | 26.09.2007 16:43 |