Speicherauslastung bei OpenURL
-
Hallo,
mir werden zwar keine MemoryLeaks angezeigt aber dennoch steigt die Speicherauslastung kontinuierlich, wenn ich Quellcode von einer Website abrufe.Woran kann das liegen?
Hier der Code:
CInternetSession m_session; CStdioFile *m_pfile; //#if 0 m_pfile = m_session.OpenURL("http://www.xyz.com"); if (m_pfile != NULL) { m_pfile->Close(); delete m_pfile; } m_session.Close(); //#endifDie Funtkion rufe ich in einer Endlosschleife immer wieder auf und beobachte die Speicherauslastung.
Grüße,
MichaelP.S.: Die Endlosschleife ist nur drin um die Entwicklung der Speicherauslastung zu beobachten und hat mit dem eigentlichen Programm nichts zu tun.
-
Das nachfolgende Programm zeigt kein Leak und keinen steigenden Speicherbedarf!
// InternetSessionLeak.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <afxinet.h> #include "InternetSessionLeak.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // The one and only application object CWinApp theApp; using namespace std; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; // initialize MFC and print and error on failure if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to suit your needs _tprintf(_T("Fatal Error: MFC initialization failed\n")); nRetCode = 1; } else { CInternetSession m_session; CStdioFile *m_pfile; for (int i=0; i<100000; ++i) { m_pfile = m_session.OpenURL(_T("http://www.grutzeck.de")); if (m_pfile != NULL) { m_pfile->Close(); delete m_pfile; } fprintf(stdout,"%5d\n",i+1); } m_session.Close(); } return nRetCode; }
-
Hallo und vielen Dank für deine Mühe!
Wenn ich deinen Code ausführe, zeigt der TaskManager das Folgende an:
Beim Start der Anwendung: 4.708K (Ich habe den Code in eine größere Anwendung eingebunden)
Beim Start der Funktion: 8.876K
Nach 800 Aufrufen deiner HP: 10.504KDie 2.000K sind natürlich nicht die Welt aber mein Prog ruft ca. 12 Std. am Tag permanent Daten ab und da kommt man dann am Ende auf ca. 90.000K
Fällt dir dazu noch was ein?
Grüße,
MichaelP.S.: Ich benutze Win XP v5.1 Service Pack 2 und Visual C++ 6.0
-
Michael H. schrieb:
P.S.: Ich benutze Win XP v5.1 Service Pack 2 und Visual C++ 6.0
Ins Blaue: Hast du das VC6 SP6 drauf? Sonst hol das mal nach: http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/download/default.aspx

-
1. Ich verwende VC-2005. VC6 gehört für mich eingestampft. Ich kann Dir nicht sagen ob dort drin etwas leaked. Gehörthabe ich davon jedoch nichts.
2. Bist Du sicher, dass der Speicher Bedarf langsam ansteigt?CInternetSession lädt einen Haufen DLLs nach. Also soltest Du mindestens einen Aufruf abwarten bis alle DLLs in Benutzung sind. Dann könntest Du mit GetProcessWorkingSetSize prüfen ob sich wirklich etwas verändert.