Embedded Visual C++ : Speicherlöcher finden

Hallo,

Folgender Code erzeugt z.B. bei Visual C++ eine Warnmeldung bzgl. Speicherloch, da der reservierte Speicher nicht mit delete wieder frei gegeben wird:

CString strTest = new CString("Test");

Eine solche Hinweismeldung erhalte ich bei eVC++ nicht.
Weiß jemand wie man eventuelle Speicherlöcher unter embedded Visual C++ finden kann, gibt es hierfür freie Tools?
Momentan benutze ich das kostenlose eVC++ 3.0.

Vielen Dank für eine Antwort.
Gruß,
Tom

Hallo Tom,

ein uraltes und bewährtes Tool ist Lint, allerdings nicht umsonst.

Siehe http://www.gimpel.com/

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Tom,

falls du kein Freeware-Tool findest, mit dem das zu machen ist, kannst du dir das auch selbst stricken (allerdings läuft das nur zur Runtime und kostet zusätzlich Speicher und Zeit, solltest du also eher nicht in deinen Produktiv-Versionen einsetzen).
Durch Überladen der „new“ und „delete“-Operatoren kannst du selbst prüfen, ob bei Programmende auch alles wieder freigegeben ist. Zusätzlich hast du die Möglichkeit, gleich da zu prüfen, ob auch wirklich ein gültiger Pointer zurückgeliefert wurde (d.h. du sparst dir die NULL-Prüfung im Programmcode, das ist wohl auch was für die Produktiv-Version), und wenn du’s ganz toll machen willst, kannst du auch noch prüfen, ob der freigegebene Speicher auch tatsächlich dem allozierten entspricht.
Wie das genau geht, müsste sich im Web finden lassen. Falls nicht und du weiter interessiert bist, dann melde dich einfach nochmal.

Gruß
Martin

Das Überladen der Operatoren new und delete wurde mir mittlerweile auch von anderen Personen empfohlen.

Anscheinend ist bei Windows CE die Speicherverwaltung nicht gerade optimal, weshalb es bei längerem Betrieb mit öfteren news und deletes zu erheblicher Defragmentierung kommen kann.

Ich werde versuche den Vorschlag bei Gelegenheit selbst anzupacken (nach meinem Urlaub:smile:
Evtl. könnte es dann doch sein dass ich dein Angebot zwecks Hilfe in Anspruch nehme.

Vielen Dank für die Antwort.
Gruß,
Tom