如果我用 NULL 初始化一个指针,这是错误的吗?我面临什么问题?还是仅仅是糟糕的编程?
int a,b,*ptr;
ptr = NULL;
ptr=&a;
上面几行有没有问题??
最佳答案
在您提供了 NULL
分配的代码中是无用的,因为在两次赋值之间永远不会访问指针(即分配 NULL
和 &a
的分配)。但是赋值NULL
还有其他情况指向一个指针是非常可取的:
- 如果有条件地将内存位置分配给指针,然后将指针传递给
free
最后,您需要分配NULL
指向初始化时的指针 - 当使用
free
释放指针时, 但在一段时间内仍然可见,您应该将指针设置为NULL
在释放它以避免悬挂引用之后 - 当出现指针失效后访问的情况时,需要赋值
NULL
指向指针,以便您的程序尽快失败。
关于c - 将 NULL 分配给指针是否是错误的编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24715218/