Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Speicherleck

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.01.2004, 14:24 Uhr
~iBOT
Gast


Hi Leute,
wie kann ich meinem Programm möglichst einfach ein Speicherleck finden?
Ich habe eine for Schleife und bei jedem Durchgeang wächst der Speicher um 0,5 - 1 MB an!!
Die Schleife muß aber über 1000mal laufen! Erschwerend kommt hinzu, dass ich eine Lib benutze und keine Ahnung habe ob bei Ihr das Problem liegt!
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.01.2004, 14:25 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


zeig mal den quellcode wenn er nicht zu lange ist....
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.01.2004, 14:27 Uhr
typecast
aka loddab
(Operator)


Es gibt da Programme, die helfen solche Leks zu finden. Wenn ich mich richtig erinnere heißen sie Profiler. Aber genau weiß ich es nicht. Probier mal google aus.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.01.2004, 14:28 Uhr
~iBOT
Gast


Ist er leider! Und ich darf in auch nicht rausgeben!
Gibt es nicht eine MÖglichkeit zu sehen wie sich der Speicher entwickelt!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.01.2004, 14:32 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


also ich mach das immer so das ich alle stellen an denen ich speicher allokiere durchgehe und nachschaue ob ich den auch wieder freigebe...
wenn man in einer schleife speicher allokiert und das für eine 1d-array ist hat man meist was falsch gemacht... (es sei denn man gibt den speicher auch gleich wieder in der schleife frei, wobei dann in diesem fall wahrscheinlich was unperformant gelöst würde...)

das in der lib der fehler ist halt ich für den eher unwahrscheinlicheren fall es sei den du oder dein kumpel hat die lib selber geschrieben

an sonsten können wir dir natürlich wenig helfen wenn du uns kein quellcode zur verfügung stellen kannst...
Ich glaub bei Visual studio bietet der Debugger solche speicherlöcher hilfen an... Wie das genau geht kann ich dir allerdings nicht sagen weil ich das immer von hand suche....
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.01.2004, 14:40 Uhr
~iBOT
Gast


@Windalf
Wieso ist es unüblich sich in eien Schleife speicher mit new zu holen und danach wenn mann fertig ihn wieder frei zu geben?

C++:
    for (int i = 1; i <= files[0]; i++)
        {
        
            char filename[256];

            sprintf( filename, "%s%i",ABSOLUT_PfAD, files[i]);    
            printf("\n%s",filename);
            img = new CxImage(filename, CXIMAGE_FORMAT_UNKNOWN);
            if (img!=NULL)
            {
                img = resize( img);
                setProfile(img);
                saveImage(img, files[i], zdata, &zlen32);
                delete img;
                img=NULL;
            
            }
        }
    system("cls");
    delete img;
    img=NULL;
    delete [] files;
    files=NULL;    

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.01.2004, 14:45 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@ibot
so ist das natürlich nicht unüblich...
ist eher wenn man ständig ein array allokiert...
und das dann wieder freigibt...sowas meinte ich
das kostet dann natürlich nur rechenzeit...


@beefy
siehst du.. noch einer der c++ und c zusammenschmeist... das mach nicht nur ich
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 09.01.2004 um 14:46 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
09.01.2004, 14:50 Uhr
~iBOT
Gast


Gibt es nun irgendein link zu einem Tool welches mir helfen Könnte! Habe was von URCA-Tool gelesen finde aber keinen Link!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.01.2004, 14:54 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Tool weiss ich wie gesagt nicht, aber wenn du kannst dein proggie doch an bestimmten stellen anhalten lassen, entweder mit dem debugger in dem du breakpoints setzt oder du machst halt immer ein getch();

gleichzeitig machst du noch den taskmanager auf und guckst dir den speicherverlauf an... wenn der speicher dann immer steigt obwohl du einen abschnitt hast durchlaufen lassen in dem der auch hätte wieder freigegebn worden zu sein scheinst du ein fehlerchen gefunden zu haben...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.01.2004, 23:41 Uhr
(un)wissender
Niveauwart


@iBot
Was glaubst du denn, was in deiner Schleife passiert?

Was tut das? Evtl. das Bild wieder kopieren (oder speichern)?
setProfile(img);
saveImage(img, files[ i ], zdata, &zlen32);
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: