001
10.02.2015, 21:33 Uhr
Hans
Library Walker (Operator)
|
Hi,
der Heap ist jener Speicherbereich, den das Betriebssystem für Dein Programm zur Verfügung stellt. Wenn Du etwa mittels malloc() in C oder new in C++ Speicherplatz anforderst, dann befindet sich dieser auf dem Heap. Die Fehlermeldung besagt nun, dass Dein Programm versucht hat, auf einen Speicherbereich zuzugreifen, der ihm nicht zugewiesen war. Du hattest also etwa n Bytes auf dem Heap belegt, Dein Programm versuchte aber auf den Speicher an der Stelle n+1 zuzugreifen. Der Fehler befindet sich irgendwo an einer Stelle, wo das Programm auf angeforderten Speicher zugreift, oder aber auch da, wo angeforderter Speicher frei gegeben werden soll, und die Speicherverwaltung des Betriebssystems dabei feststellt, das die Datenstrukturen inkonsistent sind, mit denen es Deinen Speicher verwaltet.
Guck Dir mal die folgenden Links an, die ich dazu gefunden habe.
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/
Die erscheinen mir ganz brauchbar, wobei zum einen allerdings zu sagen ist, dass die Tipps Windowsspezifisch sind und sich aufs Visual Studio beziehen. Zum anderen gehen die Teile 2 bis 4 sehr tief in die Materie, d.h. sie setzen einiges an Hintergrundwissen voraus, das man als Anfänger oder Gelegenheitsentwickler nicht unbedingt hat.
Hans
P.S. Die Abkürzung CRT lese ich im ersten Moment immer als Cathode Ray Tube, auf Deutsch also Kathodenstrahlröhre, was der technische Ausdruck für die Bildröhre eines alten Fernsehers oder Monitors ist. Das kann hier aber nicht gemeint sein. Die Frage ist also, was dann? - Die Antwort lautet: C/C++ RunTime library. -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 10.02.2015 um 21:36 Uhr von Hans editiert. |