[C++/VS2003] Statische Stack-Arrays im Debugger einsehbar, Arrays auf Heap nicht?

G

Green Mamba

Gast
Hi,

wenn ich in einer Klasse sowas hier deklariere im Header:
Code:
float stackArray [100];
landet das Array bekanntlich auf den Stack. Im Debugger kann ich einen Watcher oder Quickwatch drauflegen, und mir den Inhalt ansehen. Man kann die Variable einfach aufklappen, und sieht das gesamte Array. Wenn ich hingegen sowas hier mache:
Code:
float* heapArray = new float [100];
oder gar sowas hier: (hat soweit ich weiß den gleichen Effekt)
Code:
 float* heapArray = (float*) malloc (400);
kann ich mir jeweils nur einen Ausdruck im Quickwatch ansehen. Ich muss dafür von Hand z.B. den Ausdruck heapArray [10] ansehen, und kann dann die 10. Stelle des Arrays sehen. Gibts da einen Trick, dass ich mir z.B. im Quickwatch einen speziellen Ausdruck ansehe, so dass mir die ersten 100 Stellen an einem Pointer angezeigt werden?
Also mein Ziel ist es, dass ich mir ein Array schön übersichtlich im Debugger aufklappen kann. Und nein, ein statisches Array ist keine Alternative. :D

Viele Grüße,
Mamba
 
Blöde Idee:
Memory Dump ab der Adresse heapArray.
Die nächsten 400 Bytes sind dein Ding.

Keine Ahnung was der Wuschl Studio Debugger so kann und wie das geht.

Aber dumm scheint er nicht zu sein. Er erkennt, ja dass heapArray kein Feld ist, sondern ein Zeiger. Darum zeigt er ja nur das Element an, wo der Zeiger hinzeigt.

Was passiert eigentlich, wenn man im Header einen float array[] deklariert und später (Konstruktor?) dann ein array = new float[100]?
 
Da seht ihr mal was rauskommt, wenn man zwei Jahre lang nur C programmiert und auch noch auf MISRA Regeln acht geben muss.
Da ist nämlich dynamisches Anfordern von Speicher verboten.
PKW-Steuergeräte haben halt nun mal verdammt wenig Speicher (<100KB).
 
Zurück
Oben