Hallo liebe Experten,
wenn ich mit Visual C++ ein Programm erstelle und ein größeres Variablenfeld benötige, gibt es zwei Möglichkeiten:
-
das Variablenfeld wird gleich komplett deklariert (Speicherbelegung inklusive):
#define MAX_WIDTH (irgendwas)
#define MAX_HEIGHT (auch irgendwas)
UINT uBitmap[MAX_HEIGHT*MAX_WIDTH];
… (irgendein Code, der uBitmap verwendet) -
Es wird nur ein Zeiger deklariert, und vor der ersten Verwendung mttels z. B. new die Speicherallokation durchgeführt und nach der letzten Verwendung wieder mit free oder delete freigegeben:
UINT *uBitmap;
…
uBitmap = new UINT[MAX_HEIGHT*MAX_WIDTH];
… (irgendein Code…)
delete uBitmap;
Wenn nun die Feldgröße nicht im Vorhinein bekannt wäre, sehe ich ein, daß es sinnvoll ist, erst im Bedarfsfall die benötigte Feldgröße zu berechnen und dann zu allokieren. Aber wenn es eh eine konstante Größe ist, sind die beiden Möglichkeiten gleichwertig?
Früher einmal habe ich unter DOS mit Borland C++ 3.0 programmiert und da wirkte es sich auf die Größe der EXE-Datei aus. Bei Visual C++ scheint es aber keine Auswirkung zu haben.
Sind dann also beide Möglichkeiten gleich oder gibt es da Unterschiede?
Grüße,
I.