5 maneras de evitar problemas de puntero en C ++
En C ++, un puntero es una variable que contiene la dirección de un objeto en la memoria interna del equipo. Utilice estos pasos para evitar problemas con los punteros en C ++:
Inicializar punteros cuando se declaran.
Nunca deje las variables de puntero no inicializado - las cosas no sería tan malo si los punteros no inicializados siempre contienen valores aleatorios - la gran mayoría de valores aleatorios son valores de puntero ilegales y hará que el programa se bloquee tan pronto como se utilizan. El problema es que las variables sin inicializar tienden a asumir el valor de otras variables de puntero, utilizados anteriormente. Estos problemas son muy difíciles de depurar.
Si usted no sabe qué más para inicializar un puntero, inicializar a nullptr. nullptr se garantiza que sea una dirección ilegal.
Cero fuera punteros después de usarlos.
Del mismo modo, siempre cero una variable puntero una vez que el puntero no válido asignándole el valor es nullptr. Este es particularmente el caso cuando regresa de un bloque de memoria para el montón usando delete- siempre cero el puntero después de regresar de memoria heap.
Asignar memoria del montón y devolverlo a la pila al mismo "nivel" para evitar pérdidas de memoria.
Siempre trate de devolver un bloque de memoria para el montón en el mismo nivel de abstracción a medida que se asignan. Esto generalmente significa intentar eliminar la memoria en el mismo nivel de llamadas a funciones.
Coger una excepción para borrar la memoria cuando sea necesario.
No olvide que puede producir una excepción en casi cualquier momento. Si tiene la intención de atrapar la excepción y mantener operativo (en oposición a dejar que la caída del programa), asegúrese de que usted coge la excepción y devolver los bloques de memoria a la pila antes de que los punteros que apuntan a ellos salen de alcance y la memoria es perdido.
Asegúrese de que los tipos coinciden exactamente.
Asegúrese siempre de que los tipos de punteros coinciden con el tipo requerido. No refundición un puntero sin alguna razón específica. Considera lo siguiente:
fn void (int * p) -anular myFunc () {char c = 'a'-char * pc = c-fn ((int *) PC) -}
La función anterior compila sin quejarse ya que el pC puntero del personaje se ha reformulado a un int * para que coincida con la declaración de fn (int *) - Sin embargo, este programa es casi seguro que no funciona. La función fn () espera un puntero a un entero de 32 bits y no una mala muerte de 8 bits carbón. Este tipo de problemas son muy difíciles de resolver.
Sobre el autor
Cómo liberar memoria con la función malloc () en la programación c Aquí hay un secreto: Declarar una variable en programación C es en realidad dirigir el programa a pedir un poco de espacio de almacenamiento del sistema operativo. Como ustedes saben (espero que, ya sabes), el sistema operativo es el señor High…
Cómo sustituir punteros para notación de matriz en la programación c Arreglos en el lenguaje de programación C no son más que una caldera llena de mentiras! En verdad, ellos no existen. A medida que descubre el poder del puntero, se llega a aceptar que una matriz es simplemente un puntero hábilmente disfrazado.…
Cómo utilizar punteros y cadenas en la programación c El lenguaje de programación C carece de una variable de cadena, pero tiene la matriz de caracteres, que es efectivamente la misma cosa. Como una matriz, una cadena en C puede ser completamente torcido, torque y abusado por el uso de punteros. Es un…
¿Cómo trabajar con punteros en programación C El poder del puntero en la programación C proviene tanto de su doble personalidad, así como de su capacidad para cambiar valores, como una variable.En Más Puntero Diversión, tres variables carbonilla se declaran en la Línea 5 y inicializan todo…
Arrays y punteros en c ++ El nombre de la matriz es un puntero a la propia matriz. los array es una secuencia de variables almacenadas en la memoria. los nombre de la matriz apunta al primer elemento.Esta es una pregunta interesante sobre punteros: ¿Se puede tener un…
Comenzando con la programación c ++ para dummies C ++ está llena de pequeños símbolos, cada uno de los cuales se suma al significado de las expresiones. Las reglas de la gramática C ++ son tan flexibles que estos símbolos se pueden combinar en combinaciones casi impenetrable complejos. Las…
La declaración de un puntero en C ++ LA Char variable en C ++ está diseñado para contener un carácter ASCII, una int un número entero, y una doble un número de coma flotante. Del mismo modo, una variable puntero está diseñado para contener una dirección de memoria. Se declara…
¿Cómo funcionan los operadores de dirección en c ++ Como dice el refrán, " Todo el mundo tiene que estar en alguna parte ". Cada variable de C ++ se almacena en algún lugar de la memoria del ordenador. La memoria se divide en bytes individuales, con cada byte llevar su propia dirección numerados…
¿Cómo funciona el montón en c ++ los montón es un bloque amorfo de memoria que su programa C ++ puede acceder cuando sea necesario. Entérese de por qué existe y cómo utilizarlo.Así como es posible pasar un puntero a una función, es posible para una función para devolver un…
Cómo pasar punteros a funciones en C ++ Uno de los usos de las variables de puntero en C ++ es en el paso de argumentos de funciones. Para entender por qué esto es importante, es necesario entender cómo se pasan argumentos a una función.Pasando por el valor en C ++De forma…
Cómo utilizar variables de puntero en C ++ LA variable de puntero es una variable que contiene una dirección, por lo general la dirección de otra variable. Esto es algo análogo a un hotel. Al realizar su reserva, usted puede asignar sala de 0x100. Usted puede decirle a su hijo que usted…
Cómo utilizar la palabra clave const en C ++ LA puntero es una variable que " puntos en el " otras variables en C ++. La palabra clave const significa que una variable no se puede cambiar una vez que ha sido declarado e inicializado.const double PI = 3.1415926535-Los argumentos a funciones…