Angeforderten speicher immer auf NULL prüfen?



  • hallo

    sollte man zur laufzeit angeforderten speicher immer auf NULL überprüfen wenn man die variablen/objekte dann verwendet? wenn ja warum? :xmas1:



  • Wenn du den Speicher mit dem normalen new anforderst, nein. Wenn new nicht klappt wirft es eine bad_alloc Exception.
    Es gibt aber eine nothrow()-Variante von new die 0 zurückgibt. Wenn du die verwendest macht es wieder Sinn.



  • aha okay. ich dachte weil ich sah in anderen source codes (z.B. half-life 1 SDK) oft, das ein objekt auf NULL überprüft wurde. aber das wird wohl eher die situation gewesen sein, das es sein hätte können, das dass objekt bereits zerstörst wurde, oder?



  • wursty schrieb:

    aha okay. ich dachte weil ich sah in anderen source codes (z.B. half-life 1 SDK) oft, das ein objekt auf NULL überprüft wurde. aber das wird wohl eher die situation gewesen sein, das es sein hätte können, das dass objekt bereits zerstörst wurde, oder?

    Es hat vielleicht einen anderen Hintergrund. Viele Altgebliebene oder auch alte Sourcen verwenden die NULL-Prüfung. Das new eine Exception wirft gilt seit dem Standard von 1998.
    Nachtrag: Ein delete auf einen Zeiger setzt diesen nicht auf NULL, das musst du schon selber tun 😉

    So wirft z.B. der (leider) noch immer verbreitete VC6 im Standardfall noch keine Exception bei new (Auch wenn man dies durch includieren eines Headers umstellen kann), seit welcher Version der C++ Builder es tut, weiß ich nicht.

    Ich habe zu einer Zeit C++ angefangen zu lernen, wo der Standard kurz vor der Verabschiedung war, und noch bis vor kurzen beruflich mit Prä-Standard Compilern arbeiten dürfen. Daher kenne ich beide Varianten nur zu gut...

    cu André



  • okay danke 🙂


Anmelden zum Antworten