Форум программистов, компьютерный форум CyberForum.ru

Оператор new. Чему равны эллемнты выделенной памяти по умолчанию? - C++

Восстановить пароль Регистрация
 
Teacher269
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 12
02.01.2013, 16:09     Оператор new. Чему равны эллемнты выделенной памяти по умолчанию? #1
Пишу на Visual C++ 2012
Есть буффер 100*100 байт
C++
1
char *buf=new char[100*100*sizeof(char)];
пока он не занимает память... далее пишу:
C++
1
2
buf[<какой-то номер>]=255;
buf[<еще какой-то номер>]=155;
теперь из памяти съелось 2 байта...
далее мне надо сложить этот буфер с каким-то другим:
C++
1
2
3
for(int i=0;i<100*100;i++){
    if(buf[i]!=<что?>){src[i]+=buf[i];}//тут может быть любая сложная формула сложения
}
Вот в этом условии чему равно "что"? Ведь по идее там может быть любой мусор. Или нет?... Просто я заметил, что в граф.редакторах(фотошопе, например) память съедается пропорционально количеству нарисованных пикселей - если поставить два пикселя, то и памяти уйдет несколько байт, а если залить весь слой, тогда width*height*4. Но ведь надо же фотошопу суммировать эти два пикселя с другими слоями - следовательно приходится перебирать все элементы по очереди - писать условие на подобие тому, что я обозначил выше.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2013, 16:09     Оператор new. Чему равны эллемнты выделенной памяти по умолчанию?
Посмотрите здесь:

Корректно ли освобождение выделенной памяти? C++
C++ Освобождение памяти, выделенной под массив
C++ Как уменьшить размер выделенной памяти
Динамические массивы и экстремум выделенной памяти C++
C++ Массив: Освобождение выделенной памяти
C++ Мусор в памяти, выделенной динамически
C++ Освобождение памяти, выделенной через new
Удаление выделенной памяти C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
suff1x
15 / 15 / 1
Регистрация: 26.09.2012
Сообщений: 70
03.01.2013, 03:50     Оператор new. Чему равны эллемнты выделенной памяти по умолчанию? #2
заполнить как вариант null'ами и их соответственно не учитывать не катит?

Добавлено через 7 минут
хотя имхо правильней было бы иметь динамический двумерный буфер и не париться с переборами всего пространства.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
03.01.2013, 09:45     Оператор new. Чему равны эллемнты выделенной памяти по умолчанию? #3
Цитата Сообщение от Teacher269 Посмотреть сообщение
пока он не занимает память... далее пишу:
Кто Вам такое сказал? Память уже выделена и данный буфер занимает память.
C++
1
100*100*sizeof(char)
Может нужно посмотреть отличия new от Сишного malloc'а?
Цитата Сообщение от Teacher269 Посмотреть сообщение
теперь из памяти съелось 2 байта...
Они просто были прочитаны и так же остались висеть в памяти.
Цитата Сообщение от Teacher269 Посмотреть сообщение
далее мне надо сложить этот буфер с каким-то другим:
Если значения не инициализированы - то там мусор. Поэтому, скорее всего, нарушиться логика работы программы.
Просто я заметил, что в граф.редакторах(фотошопе, например) память съедается пропорционально количеству нарисованных пикселей - если поставить два пикселя, то и памяти уйдет несколько байт, а если залить весь слой, тогда width*height*4
Значит и памяти выделяется соответственно столько же, а не то чтобы выделили 100500 ячеек и они не занимают памяти.
Yandex
Объявления
03.01.2013, 09:45     Оператор new. Чему равны эллемнты выделенной памяти по умолчанию?
Ответ Создать тему
Опции темы

Текущее время: 09:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru