Рубрики

Что такое дикие указатели? Как мы можем избежать?

Неинициализированные указатели известны как «дикие» указатели, поскольку они указывают на какое-то произвольное расположение в памяти и могут привести к сбою или плохому поведению программы.

int main()

{

  int *p;  / * дикий указатель * /

   / * Некоторая неизвестная ячейка памяти повреждена.

   Это никогда не должно быть сделано. * / 

  *p = 12; 

}

Обратите внимание, что если указатель p указывает на известную переменную, то это не дикий указатель. В приведенной ниже программе p является диким указателем, пока он не укажет на a.

int main()

{

  int  *p; / * дикий указатель * /

  int a = 10;

  p = &a;  / * р теперь не дикий указатель * /

  *p = 12; /* Это отлично. Значение a изменяется * / 
}

Если мы хотим указатель на значение (или набор значений) без переменной для значения, мы должны явно выделить память и поместить значение в выделенную память.

int main()

{

   int *p = (int *)malloc(sizeof(int));

  *p = 12; / * Это нормально (при условии, что malloc не возвращает NULL) * / 
}

Рекомендуемые посты:

Что такое дикие указатели? Как мы можем избежать?

0.00 (0%) 0 votes