Violación de acceso de error Ubicación de escritura C ++

Violación de acceso de error Ubicación de escritura C ++
Cada vez que se trata de códigos escritos en cualquier lenguaje de programación, existe una alta posibilidad de que encuentre diferentes tipos de errores. Del mismo modo, mientras trabaja con C ++, se encuentra con ciertos tipos de errores que parecen bastante difíciles de resolver. Sin embargo, cuando observa de cerca sus prácticas de codificación, se da cuenta de que estos errores no son más que una consecuencia de sus errores descuidados.

Uno de esos errores es el error de ubicación de escritura de violación de acceso en C ++ y este artículo está dedicado a la discusión de este error. Más precisamente, discutiremos por qué este error ocurre en primer lugar y luego arrojaremos luz sobre los diferentes métodos utilizando los cuales podemos deshacernos de este error en C ++ en Ubuntu 20.04.

¿Qué es la ubicación de escritura de violación de acceso de error en C ++ en Ubuntu 20.04?

Antes de dirigirnos a la ocurrencia de este error, primero exigimos reconocer cuál es este error realmente. Como dice su nombre, este error ocurre cada vez que intenta acceder a una ubicación a la que no puede acceder en primer lugar. En otras palabras, cada vez que intente violar las normas de acceder a una ubicación de escritura configurada por el lenguaje de programación C ++, siempre encontrará este error. Ahora, la siguiente pregunta surge qué práctica de programación particular puede dar lugar a este error.

Bueno, la respuesta más simple es que cuando no comprende el uso real de diferentes entidades de un lenguaje de programación, es muy probable que ocurran tales errores. Por ejemplo, no conoce el uso de punteros y objetos de una clase. Para acceder a las funciones miembros de una clase en C ++, todo lo que necesita es un objeto de esa clase. Sin embargo, en algunos casos, puede necesitar un puntero de esa clase. En ese caso, lo que debe entender es que debe inicializar ese puntero antes de tratar de acceder a cualquier cosa con él. No hacerlo dará como resultado la producción del error en discusión. Sin embargo, aparte de esto, también puede haber algunas otras situaciones que pueden dar lugar a este error.

Ejemplo de la aparición del error de ubicación de escritura de violación de acceso en C ++ en Ubuntu 20.04

Para explicarle el escenario que posiblemente puede conducir a la aparición del error de ubicación de escritura de violación de acceso en C ++, hemos codificado el siguiente ejemplo:

En esta pequeña muestra del código C ++, tenemos una clase llamada "prueba". Dentro de esta clase, solo tenemos una sola función de miembro público llamado "myFunc ()" cuyo tipo de retorno es "nulo" i I.mi., Esta función no devolverá nada. Dentro de esta función, simplemente hemos imprimido un mensaje en el terminal. Luego, tenemos nuestra función "main ()" en la que primero hemos creado un puntero de la clase "prueba". Después de eso, hemos intentado acceder a la función "myFunc ()" de la clase "prueba" con el puntero de esta clase usando el "."Operador. Luego, acabamos de usar la instrucción "return 0" para cerrar nuestro código.

Usamos el comando que se muestra a continuación para compilar este fragmento de código:

Error de $ G ++.Error CPP -O

Tan pronto como intentamos compilar este código C ++, el error que se muestra en la siguiente imagen se produjo en el terminal:

En otras palabras, el error que se muestra arriba también se conoce como error de ubicación de escritura de violación de acceso en c++. Significa que hemos tratado de acceder a una ubicación a la que no se nos permitió acceder. Este error ocurrió en este caso porque no creamos ninguna instancia de la clase de "prueba" con la que podemos acceder a sus funciones miembros. Más bien, simplemente creamos un puntero del tipo de "prueba". Este puntero no apuntaba a ninguna ubicación en particular debido a la cual contenía una dirección de basura. Es por eso que, cuando intentamos acceder a la función miembro de la clase "prueba" mientras usa este puntero, el error se produjo en el terminal ya que esta dirección no contenía la referencia a un objeto válido de la clase "prueba" con la que Podemos acceder a sus funciones miembros.

Cómo corregir el error discutido anteriormente?

Hay dos formas diferentes de corregir el error de ubicación de escritura de violación de la violación de acceso en C ++ que acabamos de discutir anteriormente. Estos dos métodos se han discutido en detalle, fijados a continuación:

Corrección 1: por asignación de memoria dinámica en c++
Si tiene la intención de crear un puntero de la clase de destino para acceder a sus funciones miembros, puede hacer uso de este método. La solución para este método particular en forma de un código C ++ se muestra en la siguiente imagen:

En esta solución, el código básico para nuestra clase de muestra es el mismo, sin embargo, hemos realizado algunos cambios en nuestra función "main ()". Primero, hemos creado un puntero del tipo de "prueba" mientras utilizamos la "nueva" palabra clave. Al hacer esto, esencialmente estamos inicializando el puntero de tipo "prueba" a través de la asignación de memoria dinámica I.mi., Estamos asignando esta memoria en el montón. Luego, con la ayuda de este puntero recientemente inicializado, hemos intentado acceder a la función miembro de la clase de "prueba" mientras utilizan el operador "->" en C++.

Después de hacer este cambio en nuestro código, se compiló correctamente y cuando ejecutamos este código compilado, obtuvimos la salida deseada en el terminal como se muestra en la imagen a continuación:

FIJO 2: creando un objeto válido de la clase de destino en C++
Ahora, si no desea realizar la asignación de memoria dinámica, o en otras palabras, no desea lidiar con los punteros, entonces puede hacer uso de este método. Este método crea un objeto válido de la clase de destino en C ++ para acceder a sus funciones miembros y se considera un método relativamente más fácil para lograr este objetivo. La solución para este método particular en forma de un código C ++ se muestra en la siguiente imagen:

Nuevamente, en esta solución, el código básico para nuestra clase de muestra es el mismo, sin embargo, hemos realizado algunos cambios en nuestra función "main ()". Primero, hemos creado un objeto o instancia de la clase "Prueba". Esta instancia u objeto se crea en la pila y no en el montón. Luego, con la ayuda de este objeto recién creado, hemos intentado acceder a la función miembro de la clase "prueba" mientras utilizan el "."Operador en C++.

Después de hacer este cambio en nuestro código, se compiló correctamente y cuando ejecutamos este código compilado, obtuvimos la salida deseada en el terminal como se muestra en la imagen a continuación:

Conclusión

Este tutorial dio una buena explicación del error de ubicación de escritura de violación de acceso en C ++ en Ubuntu 20.04. Para lograr este objetivo, primero le explicamos el significado de este error seguido de las prácticas de programación que pueden conducir a este error. Después de eso, compartimos con usted un escenario de ejemplo que puede dar lugar a este error junto con los métodos a través de los cuales puede solucionarlo fácilmente. Después de pasar por este artículo, será capaz de evitar este error al crear sus programas en C ++ en Ubuntu 20.04.