![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Нужно ли освобождать перечислитель в Delphi XE2?Delphi , Компоненты и Классы , КоллекцииВ статье рассматривается вопрос о том, нужно ли освобождать перечислитель, возвращаемый функцией GetEnumerator, в Delphi XE2. При использовании перечислителя для generic-коллекции в Delphi XE2 может возникнуть вопрос о том, кому принадлежит возвращаемый TEnumerator, и нужно ли его освобождать после использования. В документации нет ясного ответа на этот вопрос, но рассмотрев исходный код TDictionary, можно сделать вывод, что GetEnumerator создает экземпляр TPairEnumerator, не удерживая ссылку на него. Перечислитель не уведомляется о разрушении своего словаря. Поэтому, да, нужно освобождать перечислитель самостоятельно, и сделать это нужно до разрушения словаря, которое он перечисляет, чтобы избежать ошибок доступа. Пример кода:
Также стоит отметить, что при использовании цикла В статье рассматривается вопрос о необходимости ручного освобождения перечислителя, возвращаемого функцией GetEnumerator, при работе с generic-коллекциями в Delphi XE2, и делается вывод, что это нужно делать самостоятельно до разрушения словаря, которое о Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |