是否为指针错误编程分配NULL?

时间:2014-07-12 16:53:05

标签: c pointers null

如果我用NULL初始化一个指针,那是错的吗?我面临什么问题?或者它只是糟糕的编程?

int a,b,*ptr;
ptr = NULL;
ptr=&a;

以上几行有问题吗?

1 个答案:

答案 0 :(得分:3)

在您提供的代码中,NULL的分配是无用的,因为从不在两个分配之间访问指针(即分配NULL和分配&a)。但是,还有其他情况需要将NULL分配给指针:

  • 如果有条件地为指针分配内存位置,然后指针最后传递给free,则需要在初始化时将NULL指定给指针
  • 当指针被free取消分配,但在一段时间内仍然可见时,您应该在释放指针后将指针设置为NULL以避免悬空引用
  • 如果在变为无效后访问指针时可能出现这种情况,则需要将NULL指定给指针,以便程序尽快失败。