Speicherallokierung mit malloc



  • Hallo ich bin C Anfaenger 😮 und habe Schwierigkeiten mit malloc
    //Deklarationen
    int * array;
    int erg;
    //malloc ´Benutzung
    array = malloc (erg * sizeof(int));

    Warning:
    warning: assignment makes pointer from integer without a cast

    Wie oder was habe ich falsch gemacht!Oder was muss ich casten??
    Waere toll wenn mir jemand weiterhelfen wuerde!!



  • Das fehlt:

    #include <stdlib.h>
    

    Sonst nimmt der Compiler an, dass malloc die Signatur int malloc() hat. Das ist generell keine gute Idee -- Funktionen sollte immer vor ihrer Benutzung deklariert werden, bei Standardfunktionen heißt das, dass ihre Header inkludiert werden sollten.



  • Hallo!

    Außerdem sollte man in Kombination mit dem malloc Befehl auch eine cast Operation vor dem malloc ausführen, da sonst Probleme auftreten können:

    array = (int *) malloc (erg * sizeof(int));
    

    weil sonst zwar ein array mit einem gewissen Speicherplatz reserviert wird, aber der compiler nicht weiß wofür dieser Speicherplatz gebraucht wird.

    Theoretisch, kann man auch Platz für 2 shortint schaffen, aber dann einen 'normalen' integer Wert hineinschreiben. (wäre unsinnig aber machbar)

    also viel Spaß noch



  • Nein, den cast sollte man nicht machen, es treten auch keinerlei Probleme auf. malloc liefert einen void* zurück, der Ergebnistyp ist int*, also passiert die Umwandlung automatisch.



  • btw. hätte der Cast sogar in dem Fall zu einem Fehler geführt.


Anmelden zum Antworten