Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

heap corruption detected- ошибка!

67K
10 октября 2011 года
Risha_90
17 / / 15.09.2011
есть такой код
Код:
#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...может быть кто-то знает как ее исправить?
278
10 октября 2011 года
Alexander92
1.1K / / 04.08.2008
[QUOTE=Risha_90]
 
Код:
int *p = new int;// p[];
int r = GetRValue ( pixel_color ); //извлечение красного канала
p=r;
delete p;

[/QUOTE]
Вот здесь, скорее всего, ошибка. Память выделяется под один int, а обращение идет к p+i.
67K
10 октября 2011 года
Risha_90
17 / / 15.09.2011
Цитата:
// 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;
}


вот немного переделала теперь выдается окно 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);
}

277
10 октября 2011 года
arrjj
1.7K / / 26.01.2011
p= new int [];
p= new int [w*h];
67K
10 октября 2011 года
Risha_90
17 / / 15.09.2011
спасибо большое!очень помогли!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог