Ich verstehe nicht den Zweck von boost :: checked_delete. Die Dokumentation sagt:Zweck der boost :: checked_delete
der C++ Standard ermöglicht es, in 5.3.5/5, Zeiger auf unvollständige Klassentypen zu mit einem Löschausdruck gelöscht werden. Wenn die Klasse eine nicht-triviale destructor hat, oder eine klassenspezifische Operator löschen, ist das Verhalten undefiniert. Einige Compiler Ausgabe eine Warnung, wenn ein unvollständiger Typ ist gelöscht, aber leider nicht alle tun, und Programmierer manchmal ignorieren oder Warnungen deaktivieren.
Die mitgelieferte Funktion und Klasse Vorlagen können diese Probleme zu verhindern, verwendet werden, da sie eine vollständige Art erfordern und verursachen einen Kompilierungsfehler anders.
So der C++ Standard ermöglicht es Ihnen, unvollständige Typen zu löschen, die sie, wenn der Typ einen nicht-trivialen destructor hat nicht definiertes Verhalten verursacht. Was? Wie kann ein unvollständiger Typ einen Destruktor überhaupt haben? Ist ein unvollständiger Typ nicht nur ein Prototyp?
Könnte das etwas mit dem Schneiden zu tun haben? http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c – Cogwheel