【发布时间】:2020-06-01 03:28:25
【问题描述】:
int main(){
(int*) pointer = (int*) malloc(sizeof(int));
free(pointer);
}
我从'普拉塔,斯蒂芬那里学到了东西。 C Primer Plus(开发者库)' “当函数终止时,作为自动变量的指针消失了。”很简单,我不需要将指针归空
不过,我也从学校了解到,如果指针在释放后不为空,则指针会变成悬空指针。
两个想法相互矛盾。哪一个是正确的?
【问题讨论】:
-
pointer是一个悬空指针,但它有什么关系呢?无论如何它都会超出范围。 -
悬空指针不是问题,只要你不使用它们。你可以在变量中有一个悬空指针,然后重用该变量指向其他地方。
-
据我所知,将其设置为 null 是一种“安全”门,因此以后您仍然可以使用它进行比较而不会出现内存错误
if (pointer == null) -
你需要释放指针,。这是更好的方法
-
Should one really set pointers to
NULLafter freeing them?,实际上至少还有十几个类似的行。
标签: c