Error Violation Violation Écriture Emplacement C ++

Error Violation Violation Écriture Emplacement C ++
Chaque fois que vous avez affaire à des codes écrits dans n'importe quel langage de programmation, il y a de fortes chances que vous rencontriez différents types d'erreurs. De même, tout en travaillant avec C ++, vous rencontrez certains types d'erreurs qui semblent assez difficiles à résoudre. Cependant, lorsque vous regardez attentivement vos pratiques de codage, vous vous rendez compte que ces erreurs ne sont rien d'autre qu'une conséquence de vos erreurs insouciantes.

Une telle erreur est l'erreur de localisation de la rédaction de violation d'accès en C ++ et cet article est consacré à la discussion de cette erreur. Plus précisément, nous expliquerons pourquoi cette erreur se produit en premier lieu, puis nous allons allumer les différentes méthodes en utilisant lesquelles nous pouvons facilement nous débarrasser de cette erreur dans C ++ dans Ubuntu 20.04.

Qu'est-ce que l'emplacement d'écriture de violation d'accès aux erreurs en C ++ dans Ubuntu 20.04?

Avant de nous diriger vers l'occurrence de cette erreur, nous avons d'abord besoin de reconnaître ce qu'est vraiment cette erreur. Comme son nom le dit, cette erreur se produit chaque fois que vous essayez d'accéder à un emplacement auquel vous n'êtes pas autorisé à accéder en premier lieu. En d'autres termes, chaque fois que vous essayez de violer les normes d'accès à un emplacement d'écriture configuré par le langage de programmation C ++, vous rencontrerez toujours cette erreur. Maintenant, la question suivante se pose que quelle pratique de programmation particulière peut donner lieu à cette erreur.

Eh bien, la réponse la plus simple est que lorsque vous ne comprenez pas l'utilisation réelle de différentes entités d'un langage de programmation, ces erreurs sont très susceptibles de se produire. Par exemple, vous n'êtes pas au courant de l'utilisation des pointeurs et des objets d'une classe. Pour accéder aux fonctions membres d'une classe en C ++, tout ce dont vous avez besoin est un objet de cette classe. Cependant, dans certains cas, vous pourriez avoir besoin d'un pointeur de cette classe. Dans ce cas, ce que vous devez comprendre, c'est que vous devez initialiser ce pointeur avant d'essayer d'accéder à quoi que ce soit avec. Ne pas le faire entraînera la production de l'erreur en discussion. Cependant, à part cela, il peut également y avoir d'autres situations qui peuvent donner lieu à cette erreur.

Exemple de l'occurrence de l'erreur de localisation de la rédaction de violation d'accès dans C ++ dans Ubuntu 20.04

Pour vous expliquer le scénario qui peut éventuellement conduire à la survenue de l'erreur d'emplacement d'écriture de violation d'accès en C ++, nous avons codé l'exemple suivant:

Dans ce petit échantillon de code C ++, nous avons une classe nommée «test». Au sein de cette classe, nous n'avons qu'une seule fonction de membre public nommé «MyFunc ()» dont le type de retour est «void» i.e., Cette fonction ne renverra rien. Dans cette fonction, nous avons simplement imprimé un message sur le terminal. Ensuite, nous avons notre fonction «Main ()» dans laquelle nous avons d'abord créé un pointeur de la classe «test». Après cela, nous avons essayé d'accéder à la fonction «myfunc ()» de la classe «Test» avec le pointeur de cette classe en utilisant le «.»Opérateur. Ensuite, nous venons d'utiliser l'instruction «Return 0» pour fermer notre code.

Nous avons utilisé la commande illustrée ci-dessous pour compiler cet extrait de code:

Erreur $ g ++.Erreur CPP -O

Dès que nous avons tenté de compiler ce code C ++, l'erreur indiquée dans l'image suivante a été produite sur le terminal:

En d'autres termes, l'erreur indiquée ci-dessus est également connue sous le nom d'erreur d'emplacement d'écriture de violation d'accès en C++. Cela signifie que nous avons essayé d'accéder à un endroit où nous n'étions pas autorisés à accéder. Cette erreur s'est produite dans ce cas parce que nous n'avons créé aucune instance de la classe «test» avec laquelle nous pouvons accéder à ses fonctions de membre. Nous avons plutôt créé un pointeur du type «test». Ce pointeur ne pointera pas vers un endroit particulier à cause de laquelle il contenait une adresse à ordures. C'est pourquoi, lorsque nous avons essayé d'accéder à la fonction membre de la classe «test» tout en utilisant ce pointeur, l'erreur a été produite sur le terminal car cette adresse ne contenait pas la référence à un objet valide de la classe «Test» avec laquelle Nous pouvons accéder à ses fonctions de membre.

Comment corriger l'erreur discutée ci-dessus?

Il existe deux façons différentes de réparer l'erreur de localisation d'écriture de violation d'accès en C ++ dont nous venons de discuter ci-dessus. Ces deux méthodes ont été discutées en détail, apposées ci-dessous:

Correction 1: par allocation de mémoire dynamique en C++
Si vous avez l'intention de créer un pointeur de la classe cible pour accéder à ses fonctions membres, vous pouvez utiliser cette méthode. La correction de cette méthode particulière sous la forme d'un code C ++ est affichée dans l'image suivante:

Dans ce correctif, le code de base de notre classe d'échantillons est le même, cependant, nous avons apporté quelques modifications à notre fonction «Main ()». Tout d'abord, nous avons créé un pointeur du type «test» tout en utilisant le «nouveau» mot-clé. En faisant cela, nous initialisons essentiellement le pointeur de type «test» à travers une allocation de mémoire dynamique i.e., Nous allouons cette mémoire sur le tas. Ensuite, avec l'aide de ce pointeur nouvellement initialisé, nous avons essayé d'accéder à la fonction membre de la classe «Test» tout en utilisant l'opérateur «->» en C++.

Après avoir apporté ce changement à notre code, il a été compilé avec succès et lorsque nous avons exécuté ce code compilé, nous avons obtenu la sortie souhaitée sur le terminal comme indiqué dans l'image ci-dessous:

Correction 2: en créant un objet valide de la classe cible en C++
Maintenant, si vous ne voulez pas effectuer l'allocation de mémoire dynamique, ou en d'autres termes, vous ne voulez pas faire face aux pointeurs, alors vous pouvez utiliser cette méthode. Cette méthode crée un objet valide de la classe cible en C ++ pour accéder à ses fonctions membre et elle est considérée comme une méthode relativement plus facile pour atteindre cet objectif. La correction de cette méthode particulière sous la forme d'un code C ++ est affichée dans l'image suivante:

Encore une fois, dans ce correctif, le code de base de notre classe d'échantillons est le même, cependant, nous avons apporté quelques modifications à notre fonction «Main ()». Tout d'abord, nous avons créé un objet ou une instance de la classe «test». Cette instance ou objet est créé sur la pile et non sur le tas. Ensuite, avec l'aide de cet objet nouvellement créé, nous avons essayé d'accéder à la fonction membre de la classe «Test» tout en utilisant le «.»Opérateur en C++.

Après avoir apporté ce changement à notre code, il a été compilé avec succès et lorsque nous avons exécuté ce code compilé, nous avons obtenu la sortie souhaitée sur le terminal comme indiqué dans l'image ci-dessous:

Conclusion

Ce tutoriel a donné une belle explication de l'erreur d'emplacement d'écriture de violation d'accès en C ++ dans Ubuntu 20.04. Pour atteindre cet objectif, nous vous avons d'abord expliqué la signification de cette erreur suivie des pratiques de programmation qui peuvent conduire à cette erreur. Après cela, nous avons partagé avec vous un exemple de scénario qui peut donner lieu à cette erreur avec les méthodes par lesquelles vous pouvez facilement le réparer. Après avoir parcouru cet article, vous serez capable d'éviter cette erreur lors de la création de vos programmes en C ++ dans Ubuntu 20.04.