[C/C++] pomocy! (poczatkujacy niech nie wchodza!)

0

2 misiace pisalem wszystkie komponenty do realizacji pewnego programu , uzywam bc31 poniewaz potrzebne jest mi srodowisko tylko DOSowe,testowalem wszysko i bylo stabilnie no i cacy... do czasu az chcialem przetestowac wszystko razem, nie wiem dlaczego przepelnia mi sie stos (robi to funkcja malloc()oraz farmalloc()-bo ta tez probowalem), sprawdzilem kod pod kazdym ale to pod kazdym wzgledem i nic!, problem zostaje,przed kazdym wywolaniem funkcji wsk = malloc(x) drukuje na ekran wartosc x no i dochodzi do paradoksu typu :
wolna ilosc pamieci na stosie 61656 bytes, wartosc x = 100 i po wykonaniu malloc() wolna pamiec skacze na np.: 1000 bytes a wsk wskazuje na NULL !?! kompletna paranoja!!

wg mnie to chyba bug bc31(oraz tc++ bo tez juz probowalem) albo jest cos czego nie wiem w uzywaniu malloc, jeden pomysl juz mi przyszedl :
wolna pamiec jest 64kb ale nie ma 100 bajtow w jednym kawalku zeby zrobic tam bufor dla wsk , ale to tylko dywagacje takie se...

bliski jestem zalamania nerwowego i blagam o pomoc ;-(

0

Sprawdz jaki masz model pamieci. Czesto problemy sa z LARGE i HUGE :-|

0

oczywiscie ze mam LARGE memory model , niewyobrazam sobie aplikacji baz danych z otwartymi ok 20 plikami i 40 indexami w 64kb!

ale jak juz napisalem testowalem juz program na malloc i farmalloc :-[

0

juz cos znalazlem tj:
ustawiam -
OPTIONS|COMPILER|ENTRY|EXIT CODE GENERATION|TEST STACK OVERFLOW

no i wreszcie cos! program wyrzuca mi "Stack overflow",
czyli przepelniny stos, wg moich dokladnych obliczen potrzebuje jakies 100kb - dbf oraz 20kb - interfejs = 120kb, wkurzylem sie na maxa ustawilem wielkiosc stosu dalekiego na 1mb(zmienna extern unsigned _stklen) i ku mojemu zdziwieniu nadal jest "Stack overflow",dopiero 2mb daja to ze program dziala "stabil" , jak dopisze wszystkie formularze to mi 10mb moze niestarczyc !!! co jest grane?

0

heh wychodzi na to ,ze w modelu compact^wzwyz kod typu :

void *buf;

wsk=malloc(50);
if(wsk==NULL) exit(1); /tu jest blad!!/

ale jajo...

0

tak tylko teraz mam nastepne pytanie : czym zastapic w/w sprawdzanie poprawnosci adresu? no bo mimo ze teraz wszystko jest ok to za jakis czas stos naprawde moze mi sie przepelnic a nawet o tym nie bede wiedzial, mozna jakos sprawdzic poprawnosc wskaznika pomijajac if(wsk==NULL) ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1