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

📅  最后修改于: 2021-05-30 03:35:29             🧑  作者: Mango

未初始化的指针称为野生指针,因为它们指向某个任意的内存位置,并且可能导致程序崩溃或性能下降。

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) */ 
}
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”