Entwickler-Ecke
Basistechnologien - AccessViolationException in managed Code
asoechting - Di 03.08.10 10:05
Titel: AccessViolationException in managed Code
Hallo liebe Forenmitglieder,
ich bekomme eine AccessViolationException in meiner C++ Wrapper-Klasse (managed Code), wenn ich versuche, eine Funktion aus einer unmanaged lib aufzurufen. Die Exception tritt nur sporadisch auf.
Die Codezeile, in der die Exception ausgelöst wird lautet:
int ret = this->grabber_ptr->startGrab();
Dabei ist grabber_ptr ein Zeiger auf ein Objekt, der für die Wrapperklasse als privates Attribut deklariert wurde. Es gibt eine Methode in der Wrapperklasse, die zunächst diesem Zeiger ein gültiges Objekt zuweist. Danach wird auf den Zeiger in verschiedenen Methoden zugegriffen, wie z.B. in obiger Codezeile. Ich gehe davon aus, dass der Zeiger so lange gültig ist, wie das Wrapper-Objekt selbst. Dieses wird in einer C# Klasse als privates Objekt angelegt, so dass es während der gesamten Ausführungszeit des Programms gültig sein sollte. Was kann ich tun, um solche Exception zu vermeiden?
Kha - Di 03.08.10 18:29
Ich kenne mich mit C++/CLI nicht aus, aber ein Pointer dürfte schnell ungültig werden, wenn das Objekt vom GC verschoben wird. Warum denn keine managed Referenz?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!