problem z malloc

Witam. Zwracam sie do Was z problemem dotyczacym uzycia funkcji malloc w GCC. W funkcji main() wywoluje dwie napisane przeze mnie funkcje dla ktorych parametrem wejsciowym jest wskaznik do lancucha znakow uchar. Jesli lancuch ten mam zdefiniowany statycznie (linie zaremowane w listingu) program dziala bezblednie. Jesli zadeklaruje go z uzyciem malloc() blokuje sie po kilku minutach. Poniewaz parametrem wejsciowym kazdej z tych funkcji jest wskaznik do lancucha znakow, przed kazdym wywolaniem tych funkcji odtwarzalem go z zapamietanego bufora ale to niestety nie pomoglo. Moze zasugerujecie mi miejsce gdzie popelniam blad? Z gory dziekuje za pomoc.

#include <stdlib.h>

FLAGS funkcja1(uchar *ptr); void funkcja2(uchar *ptr1);

int main (void) { uchar *vPtr=0, *vPtrBuf=0; // uchar masa[25];

vPtr=(uchar*)malloc(25); vPtrBuf=vPtr;

while(1) { vPtr = vPtrBuf; if( funkcja1( vPtr ) == YES ) // if( funkcja1( masa ) == YES ) { vPtr = vPtrBuf; funkcja2( vPtr ); // funkcja2( masa ); } // if( status == YES ) } // while(1)

return (0); } // main()

Jacek M.

Reply to
Jacek M.
Loading thread data ...

Te twoje funkcje przypadkiem nie zmieniaja lancucha ? I na pewno nie wyskocza poza 25 znakow ?

Bo jak wyskocza to moze byc istotne co zmienia.

J.

Reply to
J.F.

Dzieki. Prawdopodobnie tutaj lezy problem. Funkcji w ktorych mam obszary RAM zdefiniowane za pomoca malloc w moim programie jest sporo. Musze sprawdzic czy nie przekraczam zadelkarowanych wielkosci. Troche sporo roboty ale to jest chyba dobry pomysl na ktory sam nie wpadlem wczesniej. Jeszcze raz dzieki.

Jacek M.

Reply to
Jacek M.

No coz - wersja "objawowa" - zaalokowac troche wiecej pamieci, wpisac cos poza spodziewany obszar, sprawdzac czy po wywolaniu funkcji nadal jest tam to samo..

J.

Reply to
J.F.

I tak bede musial zrobic. Chcialem tego uniknac z powodu ilosci wywolan funkcji malloc ale coz, najwyrazniej nie ma innego wyjscia. Dzieki za pomoc i goraco pozdrawiam.

Jacek M.

Reply to
Jacek M.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.