0
Schauen Sie sich die einfachste Anwendung:Speicherlecks in 0 Codezeilen.
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
void main(void)
{
_CrtDumpMemoryLeaks();
}
er die nächste Ausgabe im Debug-Fensterbereich erzeugt:
Detected memory leaks!
Dumping objects ->
{94} normal block at 0x012EA298, 8 bytes long.
Data: <Dw > 44 77 D9 00 00 00 00 00
{93} normal block at 0x012F0DA8, 20 bytes long.
Data: </// > A8 0D 2F 01 A8 0D 2F 01 A8 0D 2F 01 01 01 CD CD
Object dump complete.
Detected memory leaks!
wie ist es möglich?
Win10, VS2015, Zielplattform Version 10.0.14393.0
Wahrscheinlich einige statisch-scoped Objekte, die die Laufzeit-C-Bibliothek intern sind und ausgebildet sind, wenn die C Bibliothek initialisiert. Nicht wirklich ein Speicherleck. –
Wahrscheinlich werden falsche Positive von einem Objekt, das durch die Laufzeit erzeugt wird, nicht zerstört, wenn es nach Lecks sucht. – NathanOliver
Warum kümmert es dich? Sie sind dabei, Ihre Anwendung zu beenden. Sobald Ihr Prozess existiert, gibt es kein Speicherleck mehr, es sei denn, das Betriebssystem selbst ist fehlerhaft. Wenn der Prozess beendet wird, wird der gesamte Speicher automatisch freigegeben. Nichts, was Sie in Ihrem Code tun, wird das ändern. –