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.


Anmelden zum Antworten