Einige meiner Code verwendet immer noch malloc
anstelle von new
. Der Grund ist, weil ich Angst habe, new
zu benutzen, weil es Ausnahme wirft, anstatt NULL
zurückzugeben, die ich leicht überprüfen kann. Jeden Anruf auf new
in einem try{}catch(){}
zu wickeln sieht auch nicht so gut aus. Bei Verwendung von malloc
kann ich einfach if (!new_mem) { /* handle error */ }
tun.Ist es möglich, einen C++ - Smartpointer zusammen mit Cs malloc zu verwenden?
Daher habe ich eine Frage. Kann ich Smartpointer zusammen mit malloc
verwenden?
Etwas wie:
SmartPointer<Type> smarty = malloc(sizeof(Type));
Etwas Ähnliches.
Ist das möglich?
Danke, Boda Cydo.
Wenn Sie möchten, dass neue jetzt eine Ausnahme auslöst und nur NULL zurückgibt, können Sie Folgendes verwenden: Geben Sie * ein bla = new (std :: nothrow) Type() ;. Ich denke, es ist besser, std :: nothrow als malloc zu verwenden, da später der Konstruktor nicht aufgerufen wird. –
Was werden Sie im Fehlerbehandlungscode tun, um zu kompensieren, dass kein Speicher verfügbar ist? Normalerweise ist der Test, wenn die Zuteilung funktioniert, dann funktionieren. Wenn es fehlgeschlagen ist, beenden Sie mit einem Fehlercode (der eine kompilierte Art ist, die Kontrolle über den Stack zurückgibt). –