утечки в CListCtrl?
От: Nibelung Россия www.livejournal.com/users/nvm
Дата: 15.12.03 09:04
Оценка:
Добрый день.
Проблема: создаю диалог, на нем ListCtrl в режиме Report, кнопка. По кнопке такой код:


void CListMemTestDlg::OnButton1() 
{
    m_List.DeleteAllItems();
    
    while (m_List.DeleteColumn(0)!=0);
    for (int i=0; i<10; i++) m_List.InsertColumn(0, "col");
    
    for (i=0; i<1000; i++) 
    {
        int t = m_List.InsertItem(0, "itm");
        m_List.SetItemData(t, i);
        for (int j=0; j<10; j++) m_List.SetItemText(t,j,"12345");
    }
    // если включить эту строчку, утекает память
    m_List.SortItems(CompareProc, 0);
}

int CALLBACK 
CompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
    if (lParam1>lParam2) return 1;
    if (lParam1<lParam2) return -1;
    return 0;
}


и память приложения, судя по Task Manager, растёт на 36-40К на каждое нажатие кнопки.
BoundsChecker молчит.

Я, конечно, понимаю, что если бы ошибка была в ListCtrl, это было бы давно известно.
Значит, это я что-то делаю неправильно. Но что?
говорят, паровозики — это не вредно...
Re: утечки в CListCtrl?
От: Навроцкий Владимир Россия www.livejournal.com/users/nvm
Дата: 16.12.03 09:12
Оценка:
Проблема решилась таким образом: заменил
    while (m_List.DeleteColumn(0)!=0);

(примерно так было в MSDN), на
    for (i=10; i>=0; i--) 
        m_List.DeleteColumn(i);


но всё-таки интересно, почему так.
говорят, паровозики — это не вредно...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.