| Autor |
Nachricht |
laupert
Unregistrierter
|
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
|
_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
|
Martin Richter Moderator
09:13:24 10.02.2010 Titel: |
|
Zitieren |
|
 |
laupert
Unregistrierter
|
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
|
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
|
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
|
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
|
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
|
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
|
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. |
|
|
|
 |