Что такое дикие указатели? Как можно избежать?
Опубликовано: 16 Декабря, 2021
Неинициализированные указатели известны как «дикие» указатели, потому что они указывают на некоторую произвольную ячейку памяти и могут привести к сбою программы или ее плохому поведению.
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 и многому другому, см. Полный курс подготовки к собеседованию .