Ich habe eine C++-Bibliotheksanwendung, die mit einem C++-Server kommuniziert, und ich erstelle einen Vektor meiner benutzerdefinierten Klassenobjekte. Aber meine Cpp/CLI-Konsolenanwendung (die mit nativem C++ interagiert) wirft einen Speicherverletzungsfehler aus, wenn ich versuche, meinen benutzerdefinierten Klassenobjektvektor zurückzugeben.
Code-Beispiel -
In meiner nativen C++-Klasse -
std::vector GetStuff(int x)
{
-- Arbeit erledigen
std::vector vec;
A a;
vec.push_back(a);
--- mehr A-Objekte hinzufügen
return vec;
}
In meiner Cpp/CLI-Klasse
public void doStuff() { std::vector
vec; vec = m_nativeCpp->GetStuff(4); // wobei nativeCpp eine dynamisch allokierte Klasse in der nativecpp DLL ist, die Anwendung wirft hier einen Speicherverletzungsfehler aus! }
exakte Fehlermeldung
Ein unbehandelte Ausnahme vom Typ 'System.AccessViolationException' ist aufgetreten in CLIConsole.exe - was mein Konsolenprojekt in cpp/CLI ist.
Zusätzliche Informationen: Es wurde versucht, auf geschützten Speicher zu lesen oder zu schreiben. Dies ist oft ein Hinweis darauf, dass anderer Speicher beschädigt ist.