Pages : 1
#1 Le 04/12/2009, à 14:52
- $Gaël$
[Résolu]Question sur free()
Bonjour,
J'ai des problèmes de fonctionnement sur un programme:
typedef struct
{
int iVar;
int *piPointeur;
}TOTO;
typedef struct
{
int iVar2;
TOTO *pToto;
}
int tata = 3;
TOTO *pMonToto;
TOTO *CreateToto(void)
{
TOTO *pTemp;
pTemp = (TOTO*) malloc(sizeof(TOTO));
if (pTemp != NULL)
{
pTemp->iVar = 1;
pTemp->piPointeur = &tata;
}
return pTemp;
}
int main(void)
{
OBJET *pMonObjet;
pMonToto = CreateToto();
//Création de pMonObjet
pMonObjet = (OBJET*)malloc(sizeof(OBJET));
if(pMonObjet != NULL)
{
pMonObjet->iVar2 = 1;
pMonObjet->pToto = pMonToto;
}
//utilisation de pMonObjet...
//Libération de pMonObjet
free(pMonObjet);
//reste du programme....
//Libération de pMonToto
free(pMonToto);
}
Est-ce que la libération de l'objet pMonObjet va-t-elle libérer pMonToto aussi?
Pour faire proprement je devrais initialiser le pointeur de TOTO dans la variable OBJET à NULL avant de libérer la variable. Est-ce obligatoire?
Gaël
Dernière modification par $Gaël$ (Le 05/12/2009, à 12:30)
Ubuntu is an ancient african word meaning : "I can't configure Debian".
Hors ligne
#2 Le 04/12/2009, à 15:28
- kyncani
Re : [Résolu]Question sur free()
Est-ce que la libération de l'objet pMonObjet va-t-elle libérer pMonToto aussi?
Non, il n'y a pas de garbage collector en C.
Pour faire proprement je devrais initialiser le pointeur de TOTO dans la variable OBJET à NULL avant de libérer la variable
Inutile.
Hors ligne
#3 Le 04/12/2009, à 18:05
- $Gaël$
Re : [Résolu]Question sur free()
Merci, c'est ce que je pensais.
Ubuntu is an ancient african word meaning : "I can't configure Debian".
Hors ligne
Pages : 1