Problem z realloc

Autor: Tomasz Szczesniak (Tomasz.Szczesniak_at_p134.f127.n480.z2.fidonet.org)
Data: Sun 27 Aug 2000 - 20:02:03 MET DST


Hello Leszek.

25 Aug 00 11:18, Leszek Kubrak wrote to All:

>> W emx-ie natknęłem się używając ww. funkcji na pewien problem -
>> nastepujący fragment kodu: char *tekst; //Tu alokujemy pamięć i
>> tworzymy łańcuch pod wskaźnikiem tekst printf ("%s\n", tekst); tekst
>> = realloc (tekst, strlen (tekst) + 10); printf ("%s\n",
>> tekst); działa niepoprawnie Druga funckja printf wypisje tylko część
>> początkowego łańcucha, a powinna cały! Dalej są już tylko same znaki
>> NULL. To jakiś bug emx-a, czy ja coś źle robię?
 LK> Teretycznie wygląda to poprawnie. Być może problem tkwi w wierszu
 LK> "//Tu alokujemy pamięć...".
 LK> Podaj dokładnie co tam robisz.

To musiałbym ze 200 linii tu przepisać. Ogólnie jest to pętla, która odputuje
bazę danych, a rekordy zgodne dopisuje jeden za drugim do bufora, który musi się
ciągle rozrastać. Mógłbym niby zarezerwować statycznie jakiś duży kawał pamięci
i zrobić tylko blokadę na nadmiernie duży rozmiar wyniku, ale dla mnie to jakoś
nieelegancko wygłada. A pierwszy obieg pętli przechodzi poprawnie - łańcuch
zawiera odpowiednio przepisaną wartośc rekordu. Przy pierwszym reallocu wszytsko
się krzaczy w sposób wyżej opisany. Wartość długości obszaru przekazywanej
funkci realloc też sprawdzam, i jest OK.

Tomasz



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:28:15 MET DST