[C]Dynamische Speicherallokation für eine Instanz einer Struktur

Hier der Code:
Code:
	liste =malloc(MAX * sizeof (eingabe));
	struct eingabe *liste;
Warum versuchst du liste zu verwenden bevor du die Variable deklariert hast?
Nutze deshalb den C++ Compiler, weil ich keinen anderen guten C Copmiler gefunden habe
Nochmal zum Mitschreiben: es ist Unsinnn C Code in einer C++ Datei zu speichern und von einem C++ Compiler übersetzen zu lassen. Wenn du in C programmierst, dann speicher deinen Code in einer C Datei und nicht in einer .cpp Datei!

Gruß
 
liste =malloc(MAX * sizeof (eingabe));
So wird das nicht funktionieren, weil du Lieste nirgends anlegst.
Mach es doch so wie es freak schon geschrieben hat.
BYTE *databuf = (BYTE *)malloc( sizeof meinDatenStruct );
Code:
BYTE *liste = (BYTE *)malloc(MAX * sizeof (eingabe));
kp ob dsa richtig ist muss los.
Ach und Varablen legt man nicht global an wenn dies nicht irgendwie zu verhindern ist und das ist es in der Regel immer (wirst du bei größeren Sachen merken, dann suchst du ewigkeiten nach fehlern).
 
free / delete hab ich leider noch nicht gelernt (noch in Ausbildung)...Werde mir das aber auf jeden Fall mal angucken und schauen wie es arbeitet.
Hab das ganze getauscht, liste ist jetzt zwar kein undeclared indentifier mehr, aber dafür ist malloc immer noch nicht gecastet...
Error:

error C2440: '=' : cannot convert from 'void *' to 'eingabe *'

Wie muss ich malloc in diesem Fall casten?:confused:
 
free / delete hab ich leider noch nicht gelernt (noch in Ausbildung)...Werde mir das aber auf jeden Fall mal angucken und schauen wie es arbeitet.
Hab das ganze getauscht, liste ist jetzt zwar kein undeclared indentifier mehr, aber dafür ist malloc immer noch nicht gecastet...
Error:

error C2440: '=' : cannot convert from 'void *' to 'eingabe *'

Wie muss ich malloc in diesem Fall casten?:confused:
Erstens steht es doch da. :confused:

Zweitens castet man in C den Rückgabewert von malloc nicht. D.h. du benennst einfach deine Datei von .cpp in .c um und schon geht's.

Gruß
 
Wie hast du es denn gemacht?
Code:
BYTE *liste = (BYTE *)malloc(MAX * sizeof (eingabe));
ich hatte mich vertan das MAX darf auf keinefalll im Malloc befehl stehen.
Code:
BYTE *liste = (BYTE *)MAX * malloc(sizeof (eingabe));
 
Code:
BYTE *liste = (BYTE*)malloc(MAX * sizeof (eingabe));
Soll BYTE ein Schlüsselwort sein oder steh ich einfach auf dem Schlauch!?

Auch in einer C DAtei bringe ich es nicht zum laufen....
 
Zuletzt bearbeitet:
Hi.

Wo ist denn jetzt das Problem die Dateiendung einfach zu ändern?

C++ kannst du sowieso nicht und in C würde man nicht casten. Wo ist denn das Problem?

Gruß
 
Hab es jetzt in einem C-Compiler versucht- Fazit: Geht auch nicht.

Es funktioniert so einfach nicht...
 
Endlich Problem gelöst- halleluja- es geht:

Code:
liste = (eingabe *)malloc(sizeof (eingabe));

Sorry, dass ich so ein pain in the ass war, aber manchmal steh ich echt aufm Schlauch...Aber wenn man's dann mal weiss, vergisst man's auch wenigstens nicht mehr...

Danke für eure Hilfe...
Bin echt froh, dass es dieses Forum gibt :rolleyes:
 
Hab es jetzt in einem C-Compiler versucht- Fazit: Geht auch nicht.
Mit welchem Compiler? Wo ist denn das Problem auf die Datei im Projekt zu gehen, F2 zu drücken und die Dateiendung einfach zu ändern?

Gruß

PS: Die meisten Compiler versuchen clever zu sein und wenn du deine Datei nicht umbenennst gehen die meisten davon aus, das es C++ Code ist und kompilieren die Datei auch im C++ Modus.
 
Zuletzt bearbeitet:
Zurück