2009-04-09 3 views
1

Ich habe eine Anwendung, die mit der Zeit immer mehr Speicher verbraucht (während sie aktiv läuft), aber es gibt keine Lecks. Ich weiß also, dass das Programm nicht etwas total falsches macht, was leicht zu finden wäre.Was sind einige gute Tools zum Messen von Speicherzuordnungen unter Windows?

Stattdessen möchte ich Zuordnungen verfolgen, damit ich anfangen kann, das Problem aufzuspüren, und auf einem Mac würde ich Instrumente verwenden, die ein detailliertes Profil darüber gibt, welche Objekte und von wem zugewiesen wurden, aber unter Windows was würde Ich benutze?

Derzeit arbeite ich mit C/C++ auf Windows XP, mit VS2005. Also alle Tools für dieses Setup wären toll, und hoffentlich Tools, die kostenlos sind oder zumindest ein paar Wochen Probezeit bieten, weil es eine Weile dauern wird, um einen Kauf abzuschließen (Firmenkram) wenn nötig, und ich habe Fristen.

Danke!

Edit: Ich benutze VLD, also weiß ich, dass das Programm keine Lecks hat, aber es scheint mehr Speicher als benötigt, und nicht zurück, so dass ich Zuordnungen, keine Lecks verfolgen muss.

Antwort

1

Glowcode is here. Es hat die schlechteste Benutzeroberfläche der Welt. Die Interna haben das Zeug aber, wenn Sie die Geduld haben, sich durch den Horror zu kämpfen, der versucht, es richtig zum Laufen zu bringen. Es gibt eine 21-tägige kostenlose Testversion. Ich habe festgestellt, dass es ein Lebensretter ist, aber Sie müssen wirklich diesen Fehler finden wollen.

+0

Nach GlowCode auszuprobieren, ich erinnere mich ich es vor ca. 4 Jahren eingesetzt hatte, aber scheint, wie es seitdem nicht viel geändert hat :) Sowieso funktioniert, aber Canopus MemoryValidator hat eine viel freundlichere Benutzeroberfläche –

+0

Wenn etwas es ist schlimmer geworden. Ich mag es aber irgendwie. Ich denke, ich habe Debugger Stockholm-Syndrom –

0

Visual Studio Aktivieren des Speicherverlust Erkennung

Die primären Werkzeuge für Speicher Erkennung Lecks sind die Debugger und die CRT Debug-Heap-Funktionen. die Debug-Heap-Funktionen umfassen die folgenden Anweisungen in Ihrem Programm zu aktivieren:

#define CRTDBG_MAP_ALLOC 
#include <stdlib.h> 
#include <crtdbg.h> 

http://msdn.microsoft.com/en-us/library/e5ewb1h3(VS.71).aspx

+0

Wird dies helfen, wenn es keine tatsächlichen Speicherlecks gibt? Ich denke, er spricht von einer Situation zunehmender Speicherauslastung im Laufe der Zeit, nicht unbedingt ein Leck –

+0

Sorry, aber ich spreche nicht über Speicherlecks, mein Programm reinigt sich perfekt, wenn es fertig ist, keine Lecks was auch immer. Das Problem besteht darin, dass es das Zuweisen und Zuweisen fortsetzt, aber keinen Speicher zurückgibt, bis es beendet wird oder etwas Ähnliches. –

Verwandte Themen