¿Qué son los punteros salvajes? ¿Cómo podemos evitar?

Los punteros no inicializados se conocen como punteros salvajes porque apuntan a una ubicación de memoria arbitraria y pueden hacer que un programa se bloquee o se comporte mal.

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

Tenga en cuenta que si un puntero p apunta a una variable conocida, entonces no es un puntero salvaje. En el siguiente programa, p es un puntero salvaje hasta que apunta a 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 */ 
}

Si queremos apuntar a un valor (o conjunto de valores) sin tener una variable para el valor, debemos asignar memoria explícitamente y colocar el valor en la memoria asignada.

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

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *