5 façons d'éviter les problèmes de pointeur en C ++

En C ++, un aiguille est une variable qui contient l'adresse d'un objet dans la mémoire interne de l'ordinateur. Suivez ces étapes pour éviter les problèmes avec des pointeurs en C ++:

  1. Initialiser pointeurs lorsqu'ils sont déclarés.

    Ne laissez jamais des variables de pointeur non initialisé - les choses ne seraient pas trop mal si pointeurs non initialisées contiennent toujours des valeurs aléatoires - la grande majorité des valeurs aléatoires sont des valeurs de pointeur illégale, elle provoquera un plantage du programme dès qu'ils sont utilisés. Le problème est que les variables non initialisées ont tendance à prendre de la valeur des autres variables de pointeur, utilisés précédemment. Ces problèmes sont très difficiles à déboguer.

    Si vous ne savez pas quoi initialiser un pointeur vers, initialiser à nullptr. nullptr est garanti d'être une adresse illégale.

  2. Zéro sur pointeurs après que vous les utilisez.




    De même, toujours zéro une variable pointeur une fois que le pointeur est plus valable en lui attribuant la valeur nullptr. Ceci est particulièrement le cas lorsque vous revenez d'un bloc de mémoire sur le tas en utilisant Delete- zéro toujours le pointeur après le retour mémoire de tas.

  3. Allouer de la mémoire à partir du tas et de le retourner au tas au même "niveau" pour éviter les fuites de mémoire.

    Toujours essayer de revenir un bloc de mémoire sur le tas au même niveau d'abstraction que vous lui étaient allouées. Cela signifie généralement que d'essayer de supprimer la mémoire au même niveau d'appels de fonction.

  4. Attrapez une exception à supprimer la mémoire si nécessaire.

    Ne pas oublier qu'une exception peut se produire à presque tout moment. Si vous avez l'intention d'attraper l'exception et continuera exploitation (plutôt que de laisser le plantage du programme), assurez-vous que vous attrapez l'exception et retourner tous les blocs de mémoire sur le tas avant les pointeurs qui pointent vers eux sortent de la portée et de la mémoire est perdu.

  5. Assurez-vous que les types correspondent exactement.

    Assurez-vous toujours que les types de pointeurs correspondent au type requis. Ne pas remanier un pointeur sans raison spécifique. Considérez ce qui suit:

fn (int * p) -annuler myFunc () {A'-char * pC char c = '= c-fn ((int *) PC) -}

La fonction ci-dessus compile sans plainte depuis le PC pointeur de caractère a été remanié à un int * pour correspondre à la déclaration de fn (int *) - cependant, ce programme sera presque sûrement pas travailler. La fonction fn () attend un pointeur vers une pleine entier de 32 bits et non pas quelque pacotille 8 bits omble. Ces types de problèmes sont très difficiles à démêler.


» » » » 5 façons d'éviter les problèmes de pointeur en C ++