什么是野指针?我们如何避免?

未初始化的指针被称为野生指针,因为它们指向某个任意内存位置,可能会导致程序崩溃或行为不正常。

null

int main()
{
int *p; /* wild pointer */
/* Some unknown memory location is being corrupted.
This should never be done. */
*p = 12;
}


请注意,如果指针p指向一个已知变量,那么它不是一个野生指针。在下面的程序中,p是一个野生指针,直到它指向a为止。

int main()
{
int *p; /* wild pointer */
int a = 10;
p = &a; /* p is not a wild pointer now*/
*p = 12; /* This is fine. Value of a is changed */
}


如果我们希望指针指向一个值(或一组值),而不需要为该值指定变量,那么我们应该显式地分配内存,并将该值放入分配的内存中。

int main()
{
int *p = ( int *) malloc ( sizeof ( int ));
*p = 12; /* This is fine (assuming malloc doesn't return NULL) */
}


© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享