¿Cómo se generan los punteros salvajes?
El motivo de la aparición de punteros salvajes:
El puntero no se inicializa cuando se define: cuando se define el puntero, si el programa no lo inicializa, apuntará a un área aleatoria, porque cualquier Los valores predeterminados de las variables de puntero (excepto los punteros modificados estáticos) son aleatorios.
El puntero no está vacío cuando se libera: cuando se usa malloc() para abrir espacio, verifique si el valor de retorno está vacío. Si está vacío, la asignación falla; , el puntero apunta a Es la primera dirección del espacio de memoria abierto. Después de liberar el espacio de memoria señalado por el puntero usando free() y eliminar, si no se borra o asigna de otra manera, se convertirá en un puntero salvaje.
Las operaciones de puntero trascienden el alcance de la variable: no devuelven punteros ni referencias a la memoria de la pila, porque la memoria de la pila se liberará cuando finalice la función.
Peligros de los punteros salvajes:
El contenido al que apunta el puntero no es válido, pero el puntero no se ha vacío. Eliminar la referencia a un puntero no nulo y no válido es un comportamiento indefinido. Se dice que no necesariamente conduce a errores. Dondequiera que se produzca el problema cuando se encuentra el puntero salvaje, el puntero deja de ser válido. Esta es la razón por la que es difícil encontrar errores.
Método de evitación:
1. Establezca el puntero en nullptr al inicializarlo y luego opere sobre él.
2. Al soltar el puntero, configúrelo en nullptr.