Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: MFC (Visual C++) ::  Heap Corruption Detected  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
laupert
Unregistrierter




Beitrag laupert Unregistrierter 09:02:41 10.02.2010   Titel:   Heap Corruption Detected            Zitieren

Hallo

Erhalte bei meinem Programm einen Debug Error, der da heißt:

Zitat:
Debug Error!

Programm: ...

HEAP CORRUPTION DETECTED: after Normal block(#4610492) at 0x2C07AF80.
CRT detected that the application wrote memory after end of heap buffer.


Der Fehler tritt auf wenn ich einen delete aufrufe. Genauer gesagt wird beim Singleton Template das einzige objekt gelöscht. Worauf deutet das hin wie kann ich den Fehler finden?
_matze
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.07.2007
Beiträge: 9269
Beitrag _matze Mitglied 09:06:03 10.02.2010   Titel:              Zitieren

Du hast irgendwo Speicher dynamisch alloziert (Heap) und dann über den gültigen Bereich hinausgeschrieben. Der Fehler ist also nicht in der Zeile mit dem delete zu finden (dort wird er nur erkannt), sondern irgendwo vorher. Alles, was mit malloc/new alloziert wurde, ist verdächtig.

_________________
Wie viele atheistische Babys hat man schon aus Versehen - oder gar mit Absicht! - getauft?
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13128
Beitrag Martin Richter Moderator 09:13:24 10.02.2010   Titel:              Zitieren

Evtl. versuchst Du mehrfach den gleichen Speicher freizugeben.
http://blog.m-ri.de/index.php/2008/10/27/vs-tipps-tricks-heap-bugs-finden-teil-1/
http://blog.m-ri.de/index.php/2008/10/31/vs-tipps-tricks-heap-bugs-finden-teil-2/
http://blog.m-ri.de/index.php/2008/11/04/vs-tipps-tricks-heap-bugs-finden-teil-3/
http://blog.m-ri.de/index.php/2008/11/27/vs-tipps-tricks-heap-bugs-finden-teil-4/

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
laupert
Unregistrierter




Beitrag laupert Unregistrierter 11:28:33 10.02.2010   Titel:              Zitieren

Danke euch.

Ich habe mir mal die Artikel durchgelesen. Bin aber nicht weitergekommen:

Beitrag 1: Habe die Codezeilen bei mir plaziert. Allerdings ändert sich nichts. Bleibe erst wieder am delete hängen.

Beitrag 2: Den Application Verifier habe ich installiert. Nun habe ich versucht diesen über VS 2008 zu starten. Geht nicht. Beim Shortcut (Umschalt+Alt+F5) tut sich nichts. Habe den Application Verifier so gestartet. Nun kann ich meine .exe hinzufügen. Aber die besagten Einstellungen finde ich nirgends. Beim Start meiner Applikation tut sich auch nichts!
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13128
Beitrag Martin Richter Moderator 12:31:53 10.02.2010   Titel:              Zitieren

laupert schrieb:
Beitrag 1: Habe die Codezeilen bei mir plaziert. Allerdings ändert sich nichts. Bleibe erst wieder am delete hängen.


Dann ist der Zeiger selbst, den Du da hast ungültig und verweist nicht auf den Speicher der allokiert wurde...
Oder der Speicher wurde schon freigegeben (schreib ich ja schon)...

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
laupert
Unregistrierter




Beitrag laupert Unregistrierter 13:40:05 10.02.2010   Titel:              Zitieren

Und wie starte ich den Application Verifier richtig?
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13128
Beitrag Martin Richter Moderator 14:32:12 10.02.2010   Titel:              Zitieren

IMHO wird er nur bei der Professional bzw. Team-Suite integriert.

Es gibt doch einen eigenen Menüeintrag.

Zudem müsste sich Dein fehlereinfacher finden lassen... ;)

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
lauptert
Unregistrierter




Beitrag lauptert Unregistrierter 15:51:04 10.02.2010   Titel:              Zitieren

Hallo.

Ich habe VS 2008 Pro. Allerdings finde ich keinen Menüeintrag.

Habe den Fehler allerdings nun gefunden. Es lag an einer Membervariable, einem Array auf das ein Zeiger zurückgegeben wurde.

Trotzdem nochmals zu dem Application Verifier. Ist ein interessantes Tool. Habe hier aber weder die Einstellungen gefunden die du da beschrieben hast. Noch habe ich irgendwelche Ausgaben gefunden, als mein Code an einer Stelle eine Ausnahmefehler gebracht hat.
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13128
Beitrag Martin Richter Moderator 16:00:00 10.02.2010   Titel:              Zitieren

Hst Du ihn den instlliert.

Im Deinen Programm/Start-Menü muss doch ein Eintrag vorhanden sein, mit dem den den ppVerifier starten kannst...

_________________
Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
laupert
Unregistrierter




Beitrag laupert Unregistrierter 16:03:21 10.02.2010   Titel:              Zitieren

Ja klar das habe ich. Du hast doch aber gemeint dass man dies auch direkt aus VS aufrufen kann. Und dort dann auch Einstellungen vornehmen.
C/C++ Forum :: MFC (Visual C++) ::  Heap Corruption Detected  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.