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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Teacher269
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 12
#1

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

02.01.2013, 16:09. Просмотров 262. Ответов 2
Метки нет (Все метки)

Пишу на 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++
Допустим я создал массив char a или int a, в общем не суть. И затем я с помощью цикла присвоил значение первым n его элементам. Но n&lt;100....

Удаление выделенной памяти - C++
есть такой класс: выделяю память под element *ptemp = new element; и iris *temp = new iris; нужно ли отдельно удалять new iris?? ...

Удаление выделенной памяти - C++
#include &lt;iostream&gt; using namespace std; int main() { int localVariable = 5; int * pLocal=...

Массив: Освобождение выделенной памяти - C++
Сказали переделать код, нужно что бы память освобождалась не в отдельной функции а как то по другому так и не понял как. #include...

Освобождение памяти, выделенной через new - C++
Я прочитал, что память динамически для строки, можно выделить к примеру узнать длину строки strlen(tex) и нужно добавить единицу для...

Корректно ли освобождение выделенной памяти? - C++
Извиняюсь, если такой вопрос уже звучал. Допустим есть такой кусок кода: struct A { int *x; } *b; void main() { b = new A;...

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

Добавлено через 7 минут
хотя имхо правильней было бы иметь динамический двумерный буфер и не париться с переборами всего пространства.
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,231
Записей в блоге: 3
Завершенные тесты: 1
03.01.2013, 09:45 #3
Цитата Сообщение от Teacher269 Посмотреть сообщение
пока он не занимает память... далее пишу:
Кто Вам такое сказал? Память уже выделена и данный буфер занимает память.
C++
1
100*100*sizeof(char)
Может нужно посмотреть отличия new от Сишного malloc'а?
Цитата Сообщение от Teacher269 Посмотреть сообщение
теперь из памяти съелось 2 байта...
Они просто были прочитаны и так же остались висеть в памяти.
Цитата Сообщение от Teacher269 Посмотреть сообщение
далее мне надо сложить этот буфер с каким-то другим:
Если значения не инициализированы - то там мусор. Поэтому, скорее всего, нарушиться логика работы программы.
Просто я заметил, что в граф.редакторах(фотошопе, например) память съедается пропорционально количеству нарисованных пикселей - если поставить два пикселя, то и памяти уйдет несколько байт, а если залить весь слой, тогда width*height*4
Значит и памяти выделяется соответственно столько же, а не то чтобы выделили 100500 ячеек и они не занимают памяти.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2013, 09:45
Привет! Вот еще темы с ответами:

Выход за границу выделенной памяти - C++
Какие операции (кроме записи) за пределами выделенной памяти приводят к UB?

Мусор в памяти, выделенной динамически - C++
Есть код, выполняет разархивацию файла, закодированного LZ77. Вот его основная часть: цикл в котором проверяется каждый бит в маске и...

Динамические массивы и экстремум выделенной памяти - C++
Как работают всякие vector'ы? Выделяют память под (допустим) 100 элементов, при достижении этого числа, выделяют новый блок памяти на 200...

Выход за пределы выделенной памяти (new, malloc) - C++
День был пасмурный... Чашка чая помогала не заснуть перед монитором... На экране высвечивались два файла с разными расширениями: .c и...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru