Quelle est la différence entre un pointeur et un pointeur suspendu?


Réponse 1:

Imaginez que vous écrivez une lettre à votre ami et que vous la postez. La lettre a une adresse qui indique la maison.

L'adresse sur la lettre est un pointeur. Lorsque votre ami déménage, vous changez son adresse sur votre lettre afin qu'elle soit envoyée au bon endroit.

Mais que se passe-t-il si votre ami déménage ou que sa maison est démolie et que vous envoyez la lettre avec la mauvaise adresse? C'est un pointeur suspendu. C'est une mauvaise adresse pour quelque chose qui est détruit ou déplacé.

Un pointeur n'est qu'une adresse pour quelque chose conservé ailleurs. Un pointeur suspendu est un pointeur pointant sur un emplacement obsolète.


Réponse 2:

Lorsque vous libérez une zone de mémoire, tout en gardant un pointeur dessus, ce pointeur se balance:

char * c = malloc (16);
gratuit (c);
c [1] = 'a';

Un pointeur est une variable dont la valeur est l'adresse d'une autre variable, c'est-à-dire l'adresse directe de l'emplacement de mémoire. Comme toute variable ou constante, vous devez déclarer un pointeur avant de l'utiliser pour stocker une adresse de variable. La forme générale d'une déclaration de variable de pointeur est: -

int var = 20;
int * ip;
ip = & var;

Réponse 3:

Lorsque vous libérez une zone de mémoire, tout en gardant un pointeur dessus, ce pointeur se balance:

char * c = malloc (16);
gratuit (c);
c [1] = 'a';

Un pointeur est une variable dont la valeur est l'adresse d'une autre variable, c'est-à-dire l'adresse directe de l'emplacement de mémoire. Comme toute variable ou constante, vous devez déclarer un pointeur avant de l'utiliser pour stocker une adresse de variable. La forme générale d'une déclaration de variable de pointeur est: -

int var = 20;
int * ip;
ip = & var;