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 castWie 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.