Teoricamente posso dizer que
free(ptr);
free(ptr);
é uma corrupção de memória, pois estamos liberando a memória que já foi liberada.
Mas e se
free(ptr);
ptr=NULL;
free(ptr);
Como o SO vai se comportar de maneira indefinida, não consigo fazer uma análise teórica real sobre o que está acontecendo. O que quer que eu esteja fazendo, isso é corrupção de memória ou não?
Liberar um ponteiro NULL é válido?
delete NULL
não é válido em C ++. delete pode ser aplicado a valores de ponteiro nulo de tipo concreto, mas não a NULL
. delete (int*) NULL
é legal, mas não delete NULL
.
ptr
apontar para a memória e você não chamá free
-lo, a memória vazará. Configurá-lo como NULL
apenas perde o controle da memória e vaza. Se ptr
acontecer de serNULL
, chamar free
é uma operação sem operação.
free(ptr)
com ptr = NULL
. Ninguém disse nada parecido.