free后p指向的内存是释放状态。虽然这个指针仍指向这个内存,但是因为其被释放,很快会被其它malloc再分配到。值就会丢失,就是说内存不可靠了。在使用free后,一定要对p进行设置为NULL,或0以表示这个指针不再是有效的。要使用需要再申请内存。
释放堆,只是将其内存还给系统,在没有使用的时候,系统并没有还原,所以再次调用,还是3.14但是如果你在free(p);之后加一句 float*q =(float*)malloc(sizeof(float));结果可能就不一样了