Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Утечка памяти в "OnDrow" / 7 сообщений из 7, страница 1 из 1
20.04.2005, 18:22
    #33026128
Komov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти в "OnDrow"
Привет!
Срочно нужно!!!
У меня проблемма: при прорисовке на формочке графика функции(рисую по таймеру)где-то течет память, и никак не удается отловить! При чем мной замечен интересный(на мой взгляд) момент: при комментировании вызова OnDrow в OnTimer утечка пропадает. Если же вызов не комментировать, а закомментировать тело OnDrow(полностью) утечка остается. Может кто-то знает, с чем это может быть связано, или, хотя бы, как это можно попытаться устранить???
...
Рейтинг: 0 / 0
20.04.2005, 19:49
    #33026377
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти в "OnDrow"
Уж не буду говорить, что ошибка скорее всего в 17 строке

КОД ГДЕ?!
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
20.04.2005, 21:10
    #33026455
Komov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти в "OnDrow"
Не знаю, насколько поможет код, но:

void CVoiceManipulationView::OnTimer(UINT nIDEvent)
{
OnDraw(GetDC());//вызов злополучной OnDrow

//change text in static text
CMainFrame *mf = (CMainFrame*)AfxGetMainWnd();
CStatic *Static = (CStatic *)mf->m_wBar.GetDlgItem(IDC_Shiftedit1);
char Str[256];
itoa(int(G_BaseToneFreq), Str, 10);
Static->SetWindowText(Str);
//

CView::OnTimer(nIDEvent);
}

И сама OnDrow:

void CVoiceManipulationView::OnDraw(CDC* pDC)
{
if (G_SharedData)
{
G_SharedData = false;

CRect rc;
rc.left = 0;
rc.top = 0;
rc.right = 520;
rc.bottom = 250;

DrawGraph((float *)&G_SpectreIn, G_Len, pDC, rc);//функция отрисовки графика

rc.left = 0;
rc.top = 260;
rc.right = 520;
rc.bottom = 500;

DrawGraph((float *)&G_SpectreOut, G_Len, pDC, rc);

G_SharedData = true;
}
}
Ну, и если на то пошло, сама функция отрисовкиграфика:
void DrawGraph(Ipp32f *Array, int n, CDC *DC, CRect rect)
{
DC->FillSolidRect(rect.left, rect.top, rect.Width(), rect.Height(),
RGB(0, 0, 0));

int i;
int H = rect.Height()/2;
//Ищем максимум
float max = 0;
float min = 0;
float current;
for (i = 0; i < G_Len; i++)
{
current = Array ;
max = (max > current) ? max : current;
min = (min < current) ? min : current;
};
max = (max > -min) ? max : -min;
max = max + 0.1 * max;
if (!max)
{
max = 1;
};

//create pen for draw
CPen *pen = new CPen();
pen->CreatePen(0, 1, RGB(150, 200, 255));
CGdiObject *temp = DC->SelectObject(pen);
//

DC->MoveTo(rect.left, rect.top + H - 1);
for(i = 0; i < n/2; i++)
{
DC->LineTo(rect.left + i - 1, rect.top + H - H * Array / max + 2);
};

//delete pen after using
DC->SelectObject(temp);
pen->DeleteObject();
delete pen;
}

Но повторяю, самое интересное то, что при комментиовании вызова OnDrow утечка пропадает, а если закомментировать тело OnDrow опять появляется!!!
...
Рейтинг: 0 / 0
20.04.2005, 21:30
    #33026469
SnowMan2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти в "OnDrow"
А если GetDC сделал, то какой-нибудь ReleaseDC не надо делать???
...
Рейтинг: 0 / 0
21.04.2005, 00:24
    #33026597
Komov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти в "OnDrow"
Как все, оказывается просто))) Спасибо, а то прямо-таки погибал!
...
Рейтинг: 0 / 0
21.04.2005, 10:56
    #33027043
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти в "OnDrow"
OnDraw() нельзя так просто вызывать. Ну и про ReleaseDC тебе уже сказали.
...
Рейтинг: 0 / 0
21.04.2005, 22:36
    #33028990
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Утечка памяти в "OnDrow"
Вместо OnDraw тебе следует вызывать CVoiceManipulationView:: Invalidate()
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Утечка памяти в "OnDrow" / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]