PDA

Visualizza la versione completa : [C] Puntatori a NULL


nellog
27-03-2018, 13:52
Salve avevo un piccolo dubbio con i puntatori.

Volevo sapere se quando creo un puntatore esso venga gi inizializzato a NULL;
ESEMPIO:
int *p;

volevo sapere se p gi uguale a NULL;

Poi un'altro problema.
se faccio

int *p;

p=malloc(10*sizeof(int));

free(p);

adesso p punta a NULL?

Grazie mille in anticipo.

linoma
27-03-2018, 14:06
Dovrebbe essere NULL solo se una viabile globale, il resto dipende dalle opzioni di compilazione. Almeno su buona parte dei compilatori

oregon
27-03-2018, 14:44
A parte quanto detto da linoma, prendi la buona abitudine di non dare per scontato che il puntatore sia a NULL ma inizializzalo.

int *p = NULL;

Dopo la free, il puntatore NON posto a NULL. Devi farlo tu.

MItaly
01-04-2018, 22:21
Lo standard C dice che:
- per variabili con static storage duration, ovvero le globali e le locali static, se non viene specificata un'inizializzazione esplicita vengono inizializzate a zero;
- in tutti gli altri casi, nascono "non inizializzate", il che significa che undefined behavior accedervi in lettura prima di averci scritto qualcosa.

Loading