Perché i programmatori usano ancora "SAFE_DELETE"? [chiuso]

3

Se avessi una monetina ogni volta che ho visto questa macro in uso, oggi scriverei solo per divertimento:

#define SAFE_DELETE(p) if ((p) != NULL) { delete (p); (p) = NULL; }

Perché i programmatori insistono nel continuare a utilizzare questa macro quando delete verifica la presenza di null? È perché imposta il puntatore su null alla fine? Allora perché non riscriverlo almeno e rimuovere il controllo ridondante:

#define SAFE_DELETE(p) { delete (p); (p) = NULL; }

Tuttavia, non sembra una buona pratica.

    
posta glampert 03.07.2014 - 02:01
fonte

1 risposta

12

Lasciami dire così. sembra come qualcosa che C ++ farebbe? C ++ è pieno di trucchi e comportamenti non definiti, ma in questa istanza, convalida validamente un parametro per te? Ogni altra lingua "più sicura" che sai genera un'eccezione se provi a fare qualsiasi cosa con un puntatore nullo, ma il linguaggio non sicuro che usi lo gestisce in modo pulito? Non è auto-consistente. Le persone adottano l'approccio sicuro perché in quasi tutti gli altri casi, C ++ forza il programmatore ad adottare l'approccio sicuro. In altre parole, nel codice C ++, "Portare la tua convalida" è idiomatico e abituale. Non sembra corretto quando manca.

    
risposta data 03.07.2014 - 02:57
fonte

Leggi altre domande sui tag