Является ли событие TListView OwnerData OnData утечкой памяти?

Я использую TListView в виртуальном режиме (OwnerData установлен в true) и это достаточно просто. TListView в vsReport стиль просмотра и использует основные заголовок и подэлементы. Код события для OnData прост (код C++ Builder, но вы поймете это, если используете Delphi):

void __fastcall TForm1::ListView1Data(TObject *Sender, TListItem *Item)
{
Item->Caption     = MyList[Item->Index].Name;
Item->SubItems->Add(MyList[Item->Index].Status);
}

Пока все хорошо, но я озадачен SubItems->Add - это утечка памяти для непрерывного добавления таких подэлементов (это также относится к заголовку)?

Должен ли я освободить память в другом событии (которое я еще не нашел)?

2 ответа

Решение

Нет, это не утечка памяти. Рамки выделены SubItems объект, и он освобождает его, когда он закончил использовать его.

Нет. Внутренне TListView поддерживает единый физический TListItem объект при работе в виртуальном режиме. Он повторно использует и очищает этот объект всякий раз, когда OnData событие должно быть запущено. Вам не нужно освобождать любой из TListItem данные вручную.

Другие вопросы по тегам