[C/C++] problem ze stosem(malloc/free)

0

mam powazny problem z kompilatorem bc31,pisze program :
system sprzedazy (w calosci w c++) w zasadzie mam juz wszystkie
narzedzia (funkcje i klasy) i zaczelem sprawdzac jak to wszystko
sie kula razem no i...

nie wiem dlaczego zapelnia mi sie stos , sprawdzalem juz na wszystkie
sposoby i nie widze zadnych bugow w kodzie , uzywam oczywiscie
dynamicznego przydzialu pamieci malloc/realloc/free (new/delete nie lubie) ale zawsze! zwalniam pamiec (sprawdzalem F7 krok po kroku oraz watches), upewnilem sie takze czy zmienne nie sa przykrywane przez zmienne globalne i tez nic, potem myslalem ze moze jakas funkcja korzystajaca z malloc/realloc nie dochodzi do miejsca gdzie jest free() i ma gdzies return po drodze ale tez wszystko gra i zalamuje rece ,uzywam modelu pamieci large i probowalem juz zamienic wszystkie te funkcje na wersje "far" i tez nic,
wreszcie zrobilem sobie funkcje ktora sprawdza stan i ilosc pamieci na
stosie ,kozysta ona z dwóch funkcji : coreleft() - sprawdaz ilosc wolnej
pamieci na stosie oraza heapcheck() - sprawdza stan (np _HEAPCORRUPT itp),oraz drukuje mi na ekranie te wyniki, "powrzucalem" te funkcje wszedzie
po malloc,realloc,free oraz jescio gdzies no i ... ku mojemu zdziwieniu
teraz wszystko jest ok tj.: stan stosu _HEAPOK, oraz to ze uzywam tylko jakies 5% stosu,poza tym wszystkie wskazniki "potraktowane" malloc nie przerywaja programu czyli nie sa NULL(bo oczywiscie wszedzie mam takie punkty kontrolne), jesli usune te funkcje do sprawdzania pamieci to problem powraca !?! pewnie niektorzy z was powiedza ze mam zostawic te funkcje do sprawdzania stanu i wszystko bedzie ok, otoz nie, poniewaz problem dotyczy miedzy innymi interfejsu uzytkownika ktory b.ucierpi na tym (czyt bedzie wolniejszy i to o wiele), program ma chodzic na 386 wiec nie moge tego tak zostawic, a po zatym to takie rozwiazywanie problemu jakos nie jest w moim guscie...uff ale sie rozpisalem

czemu funkcje coreleft() oraz heapcheck() maja tak zbawienny wplyw na na moj problem?

czy ktos juz kiedys mial taki problem ?
prosze o pomoc i z gory dzieki za pomoc

0

heh chyba mi nikt nie pomoze :-(

0

nie znam sie na tym zbytnio , ale spróbuj na innym kompilatorze ( są takie wyjątkowe wyjątki i błędy w kompilatorach bardzo trudne do wykrycia ) , jak to nie pomoże to przeorganizuj strukture programu ( wiem , ostateczna ostateczność ) . A poza tym trudno cokolwiek powiedzieć jak sie nie widzi kodu .

Pozdrawiam
ArekMaan

0

moge ci przeslac kod, ale to w sumie okolo 1400 lin,nie wiem czy ci sie kce analizowac... poza tym piszesz ze sprobowac na innym kompilatorze juz probowalem na tc++ ale to ten sam producent a jak mam przeniesc to na np djgpp no to wlasnie jest reorganizacja programu heh

dzieki za dopre chenci
papki! :-P

0

Ja bym ci radził od razu przesiąsc sie na DJGPP i nie miec problemów z pamiecią niz siedziec w bc++ :-P

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