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

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

Войти
Регистрация
Восстановить пароль
 
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
#1

Ошибка с памятью - C++

01.12.2011, 19:50. Просмотров 292. Ответов 1
Метки нет (Все метки)

Здравствуйте!
Пытаюсь преобразовать картинки одного из векторов в серые. (имеются 2 вектора с одинаковыми изображениями)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
vector<BYTE*> A1;
vector<BYTE*> A2;         //вектор для серого
vector <Graphics::TBitmap*> I;    //для измененных изображений
vector<Graphics::TBitmap*> VB;
 
 
 
void __fastcall TForm1::Button3Click(TObject *Sender)            
{                                      
 
for (size_t i=0; i<VB.size(); i++)
{
 
 
for(int y=0; y<(VB[i]->Height); ++y)
    
    for(int x=0; x<(VB[i]->Width); ++x)
    {
         A1[y]=(BYTE*)VB[i]->ScanLine[y];                        //---Ошибка
         A2[y]=(BYTE*)I[i]->ScanLine[y];                         // ---Ошибка
         A2[y][x*3+2]=((A1[y][x*3+0]+A1[y][x*3+1]+A1[y][x*3+2] )/3);
         A2[y][x*3+1]=A2[y][x*3+2];
         A2[y][x*3+0]=A2[y][x*3+1];
 
    }
 
}
           
Image2->Refresh();
  }
идет обращение на нулевой модуль.
отладчик ругается на помеченные строчки.
когда работал не с векторами изображений, а с одним (в разных Image) все было ок.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2011, 19:50     Ошибка с памятью
Посмотрите здесь:

Ошибка с памятью - C++
Добрый день, Уважаемые форумчане! Следующий код заточен под параллельный алгоритм с использованием библиотеки mpi. Сам...

Ошибка в работе с памятью - C++
После использования программы и последующего выхода из нее возникает ошибка HEAP CORRUPTION DETECTED. Хотелось бы узнать, в чем причина и...

Ошибка с динамической памятью - C++
Очень прошу помочь исправить ошибку в области дин.памяти. Проблема: 1. Шаг Создаю массив для записи 2. Шаг удаляю элемент под...

Ошибка при работе с памятью - C++
Есть класс, в котором я предпринимаю безрезультатные попытки работать с динамической памятью из-за того, что экземпляров класса может быть...

Ошибка при работе с памятью - C++
Написан следующий код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;cstdlib&gt; #include...

Ошибка при работе с памятью - C++
Если ввести например 6, 0, чтобы выбросить исключение. То по завершение программы выскакивает ошибка. В чём может быть дело? Так что то про...

Какая-то ошибка с памятью, где накосячил? - C++
Всех приветствую! Собственно программа - зачаток простого генетического алгоритма. Что делает: создается популяция с заданным количеством...

При перемножении матриц ошибка с памятью - C++
Написал класс матрица с алгоритмом умножения, но при выходе из проги выбивает ошибку. Не пойму как написать деструктор. Подскажите как...

Ошибка с памятью при работе класса и map - C++
В общем есть класс тест class test { public: test(void); ~test(void); test(const int&amp;); private:

Ошибка с памятью при работе с динамическим двумерным массивом - C++
Вроде всё правильно, но в ходе работы программа выдаёт ошибку(на скрине). Дело в двумерном динамическом массиве. Ниже код с функцией, куда...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
03.12.2011, 17:24  [ТС]     Ошибка с памятью #2
получилось.
вот так работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::Button3Click(TObject *Sender)            
{    //кнопка преобразования в серый
    for(size_t i=0; i<VB.size(); i++)
    {
     for(int y=0; y<VB[i]->Height; ++y)
     {
 
      unsigned char* col =(unsigned char*)VB[i]->ScanLine[y];                       
      unsigned char* grey=(unsigned char*)I[i]->ScanLine[y];
      for(int x=0; x<(VB[i]->Width); ++x)
      {
        unsigned char g=(col[x*3+0]+col[x*3+1]+col[x*3+2] )/3;
        grey[x*3+0]=grey[x*3+1]=grey[x*3+2]=g;
 
      }
     }
    }
 }
Ответ Создать тему
Опции темы

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