Probleme reallocation memoire vecteur

Résolu
cs_savoyard Messages postés 4 Date d'inscription samedi 20 novembre 2004 Statut Membre Dernière intervention 20 novembre 2004 - 20 nov. 2004 à 22:25
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 22 nov. 2004 à 10:13
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

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
22 nov. 2004 à 10:13
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 .
3
Rejoignez-nous