Почему TObjectList .Clear несвободные объекты?

Я только что заметил, что

var
  ObjList : TObjectList <TMyObject>;
...
ObjList := TObjectList <TMyObject>.Create (True);
ObjList.Add (TMyObject.Create);
ObjList.Clear;

не освобождает объект. Глядя на исходный код, кажется, что уведомление cnRemoved не запускается в Clear (унаследовано от TList ).

Мой вопрос: Это намеренно? Есть ли причина, по которой никто не хочет получать эти уведомления в случае Clear ? Или это можно рассматривать как ошибку в классах коллекций?

EDIT

Оказывается, я поместил строку

inherited Create;

в верхнюю часть деструктора TMyObject , который должен был войти в конструктор. Вот почему я получил сообщения об утечках памяти, которые выглядели так, как будто TObjectList не освобождает элементы. И взгляд на источник убедил меня (я был в ловушке свойства Count ). В любом случае спасибо за вашу помощь!

6
задан jpfollenius 29 June 2011 в 20:02
поделиться