| Autor |
Nachricht |
laupert
Unregistrierter
|
laupert Unregistrierter
10: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: 9592
|
_matze Mitglied
10: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: 13513
|
Martin Richter Moderator
10:13:24 10.02.2010 Titel: |
|
Zitieren |
|
 |
laupert
Unregistrierter
|
laupert Unregistrierter
12: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: 13513
|
Martin Richter Moderator
13: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
14: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: 13513
|
Martin Richter Moderator
15: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
16: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: 13513
|
Martin Richter Moderator
17: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
17: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. |
|
|
|
 |
laupert
Unregistrierter
|
laupert Unregistrierter
09:12:24 11.02.2010 Titel: |
|
Zitieren |
Im Application Verifier 4.0 gibt es ein Menü. Darin befinden sich 2 Unterpunkte: Properties und Verifier Stop Options. Beide Menüpunkte sind aber deaktiviert. Egal ob ein Projekt geladen oder nicht. Auch nicht wenn der Debugger gestartet wurde. Was muss man den da machen? |
|
|
|
 |
Martin Richter
Moderator
Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13513
|
Martin Richter Moderator
10:02:34 11.02.2010 Titel: |
|
Zitieren |
|
 |
laupert
Unregistrierter
|
laupert Unregistrierter
10:18:59 11.02.2010 Titel: |
|
Zitieren |
Gibt es das Menü Edit bei dir nicht? |
|
|
|
 |
Martin Richter
Moderator
Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13513
|
Martin Richter Moderator
10:36:34 11.02.2010 Titel: |
|
Zitieren |
Doch, aber ohne dass Du eine Aplikatin per File -> Add hinzufügst nützt das doch nichts.
Wie wäre es mal mit Doku lesen? |
_________________ 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
11:33:58 11.02.2010 Titel: |
|
Zitieren |
Hallo.
Wie wärs mit Beitrag lesen. Nein, also ich habe die Doku gelesen. Aber ich habe ja in meinem Beitrag geschrieben:
| C/C++ Code: | | Egal ob ein Projekt geladen oder nicht. | |
| C/C++ Code: | | Egal ob ein Projekt geladen oder nicht. | |
| C/C++ Code: | | Egal ob ein Projekt geladen oder nicht. | |
Also nochmal. Ich habe ein Projekt hinzugefügt mit Add und habe es auch im Debugger gestartet. Aber das Menü bleibt deaktiviert. |
|
|
|
 |
Martin Richter
Moderator
Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13513
|
Martin Richter Moderator
13:45:57 11.02.2010 Titel: |
|
Zitieren |
Im Applikation Verifier musst Du eine EXE hinzufügen. Kein Projekt! |
_________________ 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
14:20:42 11.02.2010 Titel: |
|
Zitieren |
| Zitat: | | Im Applikation Verifier musst Du eine EXE hinzufügen. Kein Projekt! |
Ja. Ist ja ok. Habe ich ja was anderes geht ja auch gar nicht. Geht aber trotzdem nicht! |
|
|
|
 |
Martin Richter
Moderator
Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 13513
|
Martin Richter Moderator
14:51:53 11.02.2010 Titel: |
|
Zitieren |
Also Ich habe link eine EXE und rechts im Fenster meine Optionen, die ich setzen möchte.
Wenn Du nun einen Leaf-Node markierst, dann kannst Du auch für diesen Case die "Verifier Stop Options" setzen. |
_________________ 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
09:10:24 12.02.2010 Titel: |
|
Zitieren |
Hallo. Ok das hat nun geklappt. Danke. Doch ins Visual Studio habe ich das ganze noch nicht integriert gebracht. |
|
|
|
 |