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

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

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

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

01.12.2011, 19:50. Просмотров 287. Ответов 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++ Ошибка при работе с памятью
Какая-то ошибка с памятью, где накосячил? C++
C++ Работа с динамической памятью через указатели. Загадочная ошибка.
Работа с динамической памятью через указатели. Загадочная ошибка. C++
При перемножении матриц ошибка с памятью C++
Ошибка в работе с памятью C++
Ошибка при работе с памятью C++
Ошибка с динамической памятью C++
После выполнения программы, работающей с динамической памятью, вылетает ошибка C++
Ошибка с памятью при работе с двумерными массивами. C++
Ошибка с памятью при работе класса и map C++
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;
 
      }
     }
    }
 }
Yandex
Объявления
03.12.2011, 17:24     Ошибка с памятью
Ответ Создать тему
Опции темы

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