Pointeurs ...

Résolu
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008 - 28 août 2006 à 16:39
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 28 août 2006 à 18:50
Bonjour,

J'ai une petite question, c'est pas vraiment un probleme de code mais plutot de théorie. Imaginez qu'en global j'ai déclaré un pointeur vers une structure à qui j'alloue de l'espace mémoire avec HeapAlloc() que j'ai par exemple appelé lpGlobal. Ensuite dans une procédure, je crée un pointeur vers une structure, mais je ne l'initialise pas avec HeapAlloc mais je fais ceci :

Pointeur = lpGlobal

Il prend l'adresse de la structure, aucun soucis. Je voudrai savoir comment détruire Pointeur sans détruire l'espace mémoire occupé par lpGlobal.

J'arrive pas à bien m'exprimer lol. Posez moi vos questions si vous ne comprenez pas la mienne.

Merci :p

Apprendre le VB6

6 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
28 août 2006 à 16:59
Ben Pointeur n'a aucune mémoire alloué
Il pointe juste vers l'addresse de ta structure donc tu n'as rien à détruire je suppose
Tu peux toujours faire

Pointeur = NULL;

ULARGE_INTEGERJokyQi=QI("Joky"
3
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
28 août 2006 à 17:03
Justement c'est la question que je me pose. Est-il utile de le détruire ? Occupe-t-il de la place mémoire ? Je pense comme toi que non mais il doit bien exister quelque part vu qu'il arrive à contenir une adresse non ?

Apprendre le VB6
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
28 août 2006 à 17:04
Salut,
Un pointeur est tout simplement une variable qui contient l'adresse mémoire d'une autre variable. Dans ton cas il s'agit d'une structure. Pour rendre un pointeur inutilisable il suffit de lui affecter la valeur 0.
pointeur =0;
Dans ton code tu fais les tests nécessaires pour que ce pointeur ne soit pas utilisé tant qu'il est nul.
Ainsi, le pointeur est inutilisable mais la zone mémoire allouée est toujours accessible avec l'autre pointeur.
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
28 août 2006 à 17:09
Un pointeur ne prend que 4 octets quelque soit la taille de la zone mémoire allouée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ziman Messages postés 245 Date d'inscription dimanche 27 avril 2003 Statut Membre Dernière intervention 26 septembre 2008
28 août 2006 à 17:15
Merci, c'est la réponse que j'espérais, merci

Apprendre le VB6
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
28 août 2006 à 18:50
Si tu alloues ton pointeur dynamiquement, il faut le libérer. Dans le cas contraire, tu n'as rien a faire:


{

int * pointeur; <= RIEN a faire pour le libéré, il est détruit a la fin du bloc

}


{

int ** pointeur = new int*; <= un delete s'impose


delete pointeur;

}
0
Rejoignez-nous