![]() |
Zugriffverletzung beim Releasen von IShellFolder
Hallo,
ich habe zig Delphi-Code-Beispiele gesehen, in denen über einen IMalloc-Pointer und der Free-Methode PIDLs freigegeben werden. Jetzt habe ich mich mal an C++-Beispiele gehalten und auch IShellFolder und EnumLists über die eigene Methode _Release freigegeben. Das hat dann aber Zugriffsverletzungen gehagelt. Kann mir jemand den Unterschied erklären bitte? Grüße Sebastian |
Re: Zugriffverletzung beim Releasen von IShellFolder
Zeig mal deinen Code.
|
Re: Zugriffverletzung beim Releasen von IShellFolder
Moin Sebastian,
das Problem wird sein, dass Delphi diese Freigaben mit Release automatisch einbaut (sozusagen mittels Compiler Magic), so dass man die üblichen C/C++ Beispiele nicht 1:1 in Delphi übernehmen kann. Dadurch, dass Du selber diese Methode noch einmal aufrufst, setzt Du den Referenzzähler für das Objekt weiter herunter, so dass es früher freigegeben wird, als vom Compiler "erwartet", und Du auf ein nicht mehr existentes Objekt zugreifst => Zugriffsverletzung. |
Re: Zugriffverletzung beim Releasen von IShellFolder
danke für diese klare antwort. schade das nicht auch PIDLs vom Compiler verwaltet werden. Hier alloziiert man ja auch nicht explizit Speicher um sie zu benutzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz