Einzelnen Beitrag anzeigen

Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#1

GNU C++ - wie Speicherfehler abfangen ?

  Alt 13. Aug 2024, 23:33
Hallo,

- ich habe eine C++ Klasse im Namensraum (namespace) "qvc".
- ich habe eine gleich lautende Klasse QChar, die aber im Framework Qt5 untergebracht ist.
- die Qt5 QChar Klasse spreche per ::QChar an :

- die Klasse: qvc::QChar * foo = new qvc::QChar();
wird ohne Fehler erzeugt.
- im constructor von qvc::QChar erstelle ich eine Referenz zur Qt5 QChar Klasse:
mittels:

qvc::QChar() { origin_obj = new ::QChar(); }

- alles wird ohne Fehler oder Probleme erledigt.
- wenn ich jedoch dann im destructor das Objekt "origin_obj" löschen möchte, prüfe
ich vorher, das der Wert nicht einen nullpointer entspricht.
- wie zu erwarten ist, wird diese Auswertung mit True zurück geliefert und "delete"
versucht "origin_obj" zu löschen.
- aber genau hier bekomme ich einen Fehler, der aber nicht abgehandelt wird.
- ich habe versucht das ganze per try catch abzufangen, aber da passiert rein gar nichts.
- die std::wcout << L"...
wird nicht ausgegeben.
- wie kann man dann Speicherfehler abfangen, die in einer DLL passieren ?
- geht das nicht mit exception's ?
- wo liegt mein Fehler ?

Code:
namespace "qvc" {
class QChar {
private:
    ::QChar* origin_obj;
public:
    QChar();
    ~QChar();
...
};

qvc::QChar::~QChar(void)
{
    #ifdef DEBUG
    std::wcout << L"cpp: QChar: dtor..." << std::endl;
    #endif
    try {
        if (nullptr != origin_obj) {
            std::wcout << L"not null" << std::endl;
            delete origin_obj;
        }
    }
    catch (std::exception &e) {
        std::wcout << L"Exception: ";
        std::wcout << e.what() << std::endl;
    }
}
}
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat