speicherallokierung und -freigabe...
-
cppLer schrieb:
Was soll der erste Tip bringen?
delete kann nicht fehlschlagen, new aber schon. Und wenn geanu dieser Fall in set_dim eintritt, ist sein Objekt "kaputt".
cppLer schrieb:
In seiner Klasse gibt es doch nun beide Möglichkeiten, dass das Feld erstellt wurde oder halt nicht. Warum soll er da einfach die Überprüfung weglassen? Würde im letzter Fall ja die schon erwähnte Fehlermeldung bringen.
Ich darf für dich mal den Standard zitieren
ISO/IEC 14882:2003(E) schrieb:
if the value of the operand of delete is the null pointer the operation has no effect
(5.3.5-2)
-
mmh, also lass ich die überprüfung weg, früher kam, da immer ne komische fehlermeldung...
jetz aber nicht mehr! trotzdem ist die überprüfung best. performance-verbessernd, oder?
-
exigoner schrieb:
mmh, also lass ich die überprüfung weg, früher kam, da immer ne komische fehlermeldung...
jetz aber nicht mehr! trotzdem ist die überprüfung best. performance-verbessernd, oder?Ich vermute, dass der delete-Operator eine solche Ueberpruefung einfach selber macht. Schliesslich hat er bei einem NULL-Pointer nichts zu tun. Wenn man diese nochmal darum setzt, wird der Compiler - mit etwas Glueck - diese Abfrage weg-optimieren.
-
if the value of the operand of delete is the null pointer the operation has no effect
bezieht sich das auch wirklich auf []delete ???
steht ja nur ohne Klammern da ... .
-
cppLer schrieb:
if the value of the operand of delete is the null pointer the operation has no effect
bezieht sich das auch wirklich auf []delete ???
steht ja nur ohne Klammern da ... .JA... delete[] kann gar keine Exception werfen:
void operator delete[](void* ptr, void*) throw();