malloc() durch array ersetzen
-
Hallo.
Ich bin Neuling auf dem Gebiet der C-Programmierung und haette mal eine Frage bezueglich folgenden Problems:
Der Aufruf lautet:
int *pointer = malloc(512*256);
(es werden also 512*256 Byte reserviert und pointer verweist auf den Anfang des reservierten Bereichs, richtig?)
Nun wuerde ich das ganze aber gern als Array schreiben.
Darf ich dann einfach sagen:
int array[512*256];
?
Vielen Dank schonmal
Gruss
Sonic
-
Das darfst Du machen, aber das Ergebnis ist unterschiedlich.
Im ersten Fall (malloc) ist Dein Bereich 512*256 Byte groß, im zweiten Fall ist Dein Array 512*256 int groß.
Im ersten Fall passen in den reservierten Bereich also 512*256 / sizeof(int) Integerwerte hinein, in das Array passen 512*256 Integerwerte.
-
das geht ohne weiteres. aber mit deinem 'malloc' malllocst du 256*512 chars, während die zeile mit dem array hat 256*512 'ints' hat. d.h. sie verbraucht mehr speicher. wenn du sowas wie die malloc-zeile haben willst, dann solltest du ein 'char' array anlegen. oder in dem malloc-aufruf fehlt das '*sizeof(int)'. je nachdem...
-
das geht ohne probleme. beim ersten werden allerdings 512*256 reserviert und beim zweiten 512*256*sizeof(int).
-
ne ich schreibs eh nicht auch noch hin...
-
werden in dem speicherbereich "malloc" ints abgelegt? durch den int pointer nehm ichs mal an:) dann machst du so was. byteanzahl durch int-byte größe teilen.
int Array[(512*256*sizeof(byte))/sizeof(int)];
wobei dur sizeof(byte) weg lassen könntest.
in dem Fall hast du ein in array in dem genauso viele ints reinpassen wie in der malloc variante.