infoarena

Comunitate - feedback, proiecte si distractie => Off topic => Subiect creat de: Cotletz Ovidiu din Martie 10, 2008, 13:12:25



Titlul: Fctia realloc
Scris de: Cotletz Ovidiu din Martie 10, 2008, 13:12:25
Are cineva vreo idee de ce cand apelez fct realloc imi iese din program ? Spre exemplu atunci cand i este 4 in exemplul de mai jos imi iese din program la linia 3 .

Portiunea care nu iese
Cod:
int long *h[100];      //1
h[i]=(int long*)realloc(h[i],sizeof(int long));    //2
h[i]=(int long*)realloc(h[i],(h[i][0]+1)*sizeof(int long));  //3


Titlul: Răspuns: Fctia realloc
Scris de: Airinei Adrian din Martie 10, 2008, 13:19:49
h[ i ][ 0 ] este neinitializat


Titlul: Răspuns: Fctia realloc
Scris de: Cotletz Ovidiu din Martie 10, 2008, 13:53:23
  Scz . De fapt era
Cod:
int long *h[100];      //1
h[i]=(int long*)realloc(h[i],sizeof(int long));    //2
h[i][0]=0; //2
h[i]=(int long*)realloc(h[i],(h[i][0]+1)*sizeof(int long));  //3

Ma indoiesc ca va reusi cineva sa imi arate ce am gresit ,  dar daca mi-ar putea cineva spune care ar fi  motivele pentru care fct realloc mi-ar inchide programul .  :?


Titlul: Răspuns: Fctia realloc
Scris de: Stefan Istrate din Martie 10, 2008, 14:17:39
Si pe i nu-l initializezi? Daca l-ai declarat global e initializat cu 0, dar daca e local, atunci o sa ia o valoare random care e foarte probabil sa fie in afara vectorului.

[Later Edit]
In linia 2, tu incerci sa redimensionezi zona de memorie de la adresa 0x00000000 (NULL), ceea ce nu iti este permis. :)


Titlul: Răspuns: Fctia realloc
Scris de: Cotletz Ovidiu din Martie 11, 2008, 10:22:11
   Primele 3 linii merg pentru orice aproape orice valoare a lui i in intervalul (0,99) dar pentru i=4 nu .