verlassen Gesicht ich ein ähnliches Problem wie void pointer returned from function heap corruptionHeapbeschädigung wenn Umfang mit unique_ptr
Die Ähnlichkeit ist, dass ich „Heap Korruption“ Nachricht erhalten, wenn Sie den Umfang zu verlassen, wo unique_ptr verwendet wird.
Hier ist der Code:
void CMyClass::SomeMethod()
{
std::unique_ptr<IMyInterface> spMyInterface;
spMyInterface.reset(new CMyInterfaceObject()); // CMyInterfaceObject is derived from IMyInterface
any_list.push_back(spMyInterface.get()); // any_list: std::list<IMyInterface*>
any_list.clear(); // only clears the pointers, but doesn't delete it
// when leaving the scope, unique_ptr deletes the allocated objects... -> heap corruption
}
Jede Idee, warum dies geschieht?
Ist die destructor von IMyInterface virtuellen erklärt? – Henrik
möchten Sie möglicherweise das Betriebssystem und den Compiler hinzufügen, den Sie verwenden. –
Sind Sie sicher, dass 'any_list.clear()' das Objekt nicht löscht? Es scheint, als würde die Heap-Beschädigung aufgrund eines doppelten Löschens gemeldet, wenn der Destruktor der unique_ptr aufgerufen wird. Versuchen Sie, einen Breakpoint im Destruktor für 'CMyInterfaceObject' zu setzen. – mark