■free(ptr)でptrはNULLか?
#include <stdio.h>
#include <stdlib.h>
int main(void){
char *ptr = malloc(256);
if(ptr == NULL)
return 1;
free(ptr);//解放
if(ptr == NULL)
puts("freeしたらNULLになる");
else
puts("freeしてもNULLにはならない");
}
freeしたら
free関数がポインタをNULLにしてくれると
思っている人!
残念ですが間違っています。
参考:
CFAQ-4.8: 呼んだ側のポインターの値は変わらなかった。
