在分配指针之前和之后将指针设置为NULL是否有区别?
例如,两者之间有什么区别吗
char* c = NULL;
和
char* c = malloc(sizeof(char));
c = NULL;
这些语句中的每一个的含义是什么(如果有的话),free(c)
在每种情况下调用时有什么区别?
在分配它之前,它可能具有(取决于声明的位置)垃圾数据。通过之前将其分配为null,基本上可以确保它处于已知的良好状态。
在将地址分配并分配给变量后,将指针设置为null意味着指针将不再引用分配的内存。通常,这会造成内存泄漏(一部分已分配的内存无法再被引用,因此无法释放)。但是有时候这是适当的。例如,如果您的逻辑有两个对内存的引用,一个用于分配/解除分配目的,一个用于“当前感兴趣的项目”,则分配当前感兴趣的项目,然后为该“当前项目”分配null可能是合适的兴趣”指针与内存分配和释放无关。
最后,如果它是用于释放free()
的指针,则在指针之后,出于与分配之前将指针设置为null相同的原因,您可能希望将指针设置为null(以确保程序没有当不是您要访问的内存时,通过在指针中找到地址值会感到困惑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句