Probleme reallocation memoire vecteur [Résolu]

Signaler
Messages postés
4
Date d'inscription
samedi 20 novembre 2004
Statut
Membre
Dernière intervention
20 novembre 2004
-
ymca2003
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
-
double *b;

//fction allocation memoire: (permet d'allouer pas obligatoirement à partir de b[0] mais d ou on veut:

double *dvector(int nl,int nh)
{
double *v;
v=(double *)malloc((unsigned)(nh-nl+1)*sizeof(double));
if(!v) return NULL;
v=v-nl;
return v;
}

//fction reallocation memoire:
double *realldvector(double *b,int size)
{
b=(double *)realloc(b,(unsigned)(size)*sizeof(double));
if(!b) return NULL;
return b;
}

int main()
{
if((b=dvector(1,1))==NULL)
{
printf("Memory Allocation failure");
exit(1);
}

if((b = realldvector(b,5))==NULL)
{
printf("Memory Allocation failure");
exit(2);
}

}

ca ne marche pas s y jaloue au depart mon vecteur à partir de b[1] et non b[0] POURQUOI et comment faire???????

1 réponse

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
les pointeurs à donner à realloc et à free sont ceux retournés par malloc. Or comme tu fait v=v-nl (pourquoi ?) tu ne peut pas réallouer à partir de la valleur retournée par dvector (b). pour que ça marche, il faut refaire b+nl .