#include "stdafx.h"
#include <atlstr.h>
#include <atlimage.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{{
CImage in;
in.Load ( L"D:\in.jpg" ); //открываем картинку из файла
int w = in.GetWidth(); //ширина
int h = in.GetHeight(); //высота
for ( int y = 0; y < h; y++ )
{
for ( int x = 0; x < w; x++ )
{
COLORREF pixel_color = in.GetPixel( x, y ); //цвет пикселя с координатами x, y
{
for ( int i = 0; i < h*w-1; i++ )
{
int *p = new int;// p[];
int r = GetRValue ( pixel_color ); //извлечение красного канала
p=r;
delete p;
int g = GetGValue ( pixel_color ); //извлечение зеленого канала
int b = GetBValue ( pixel_color ); //извлечение синиго канала
}
//std::cout<<"R["<<y<<"]["<<x<<"]="<<r<<std::endl;
//std::cout<<"G["<<y<<"]["<<x<<"]="<<g<<std::endl;
//std::cout<<"B["<<y<<"]["<<x<<"]="<<b<<std::endl<<" \n";
}}}
};
return 0;
}
heap corruption detected- ошибка!
Код:
в конце компиляции выдает ошибку heap corruption detected...может быть кто-то знает как ее исправить?
Код:
int *p = new int;// p[];
int r = GetRValue ( pixel_color ); //извлечение красного канала
p=r;
delete p;
int r = GetRValue ( pixel_color ); //извлечение красного канала
p=r;
delete p;
[/QUOTE]
Вот здесь, скорее всего, ошибка. Память выделяется под один int, а обращение идет к p+i.
Цитата:
// bmp 1.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <atlstr.h>
#include <atlimage.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{{
CImage in;
in.Load ( L"D:\in.jpg" ); //открываем картинку из файла
int w = in.GetWidth(); //ширина
int h = in.GetHeight(); //высота
int *p;
p= new int [];
for ( int y = 0; y < h; y++ )
{
for ( int x = 0; x < w; x++ )
{
COLORREF pixel_color = in.GetPixel( x, y ); //цвет пикселя с координатами x, y
{
for ( int i = 0; i < h*w; i++ )
{
int r = GetRValue ( pixel_color ); //извлечение красного канала
p=r;
int g = GetGValue ( pixel_color ); //извлечение зеленого канала
int b = GetBValue ( pixel_color ); //извлечение синиго канала
}
//std::cout<<"R["<<y<<"]["<<x<<"]="<<r<<std::endl;
//std::cout<<"G["<<y<<"]["<<x<<"]="<<g<<std::endl;
//std::cout<<"B["<<y<<"]["<<x<<"]="<<b<<std::endl<<" \n";
}}}
delete[] p;
};
return 0;
}
//
#include "stdafx.h"
#include <atlstr.h>
#include <atlimage.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{{
CImage in;
in.Load ( L"D:\in.jpg" ); //открываем картинку из файла
int w = in.GetWidth(); //ширина
int h = in.GetHeight(); //высота
int *p;
p= new int [];
for ( int y = 0; y < h; y++ )
{
for ( int x = 0; x < w; x++ )
{
COLORREF pixel_color = in.GetPixel( x, y ); //цвет пикселя с координатами x, y
{
for ( int i = 0; i < h*w; i++ )
{
int r = GetRValue ( pixel_color ); //извлечение красного канала
p=r;
int g = GetGValue ( pixel_color ); //извлечение зеленого канала
int b = GetBValue ( pixel_color ); //извлечение синиго канала
}
//std::cout<<"R["<<y<<"]["<<x<<"]="<<r<<std::endl;
//std::cout<<"G["<<y<<"]["<<x<<"]="<<g<<std::endl;
//std::cout<<"B["<<y<<"]["<<x<<"]="<<b<<std::endl<<" \n";
}}}
delete[] p;
};
return 0;
}
вот немного переделала теперь выдается окно oc windows инициировала точку останова в .exe -шномфайле и ссылается на debug2.cpp:
Цитата:
#include <cruntime.h>
#include <malloc.h>
#include <new.h>
#include <windows.h>
#include <rtcsup.h>
void operator delete[]( void * p )
{
RTCCALLBACK(_RTC_Free_hook, (p, 0))
operator delete(p);
}
#include <malloc.h>
#include <new.h>
#include <windows.h>
#include <rtcsup.h>
void operator delete[]( void * p )
{
RTCCALLBACK(_RTC_Free_hook, (p, 0))
operator delete(p);
}
p= new int [w*h];
спасибо большое!очень помогли!