Bytes aus Char* lesen
-
Jetzt einfach mal ins Blaue geraten, kann es sein dass der Stack das unter Windows nicht mitmacht und ein Stack Overflow passiert? Imho liegen ja Strukturen wie auch normale Variablen bei deklaration auf dem Stack...
-
Wenn ich die Array größen veringere, geht es ja, aber die müssten schon so bleiben... Kann ich nicht die Array Größen während der Laufzeit seten?
-
Ja, du könntest den Speicher zur Laufzeit alloziieren. Dann sind
malloc( )
,calloc( )
,realloc( )
undfree( )
Deine Freunde.Wahrscheinlich kannst Du die größe des Stacks auch in den Einstellungen Deines Compilers festlegen.
greetz, Swordfish
-
Swordfish schrieb:
Ja, du könntest den Speicher zur Laufzeit alloziieren. Dann sind
malloc( )
,calloc( )
,realloc( )
undfree( )
Deine Freunde.Wahrscheinlich kannst Du die größe des Stacks auch in den Einstellungen Deines Compilers festlegen.
greetz, Swordfish
wie kann ich also z.b. Tree trees[]; zur Laufzeit alloziieren?
So geht es ja nicht?!
trees = (Tree) malloc(9999);
mfg Ercan
-
Tree *trees = malloc( n * sizeof( *trees ) );
Den Rückgabewert von
malloc( )
castet man nicht!n
ist die Anzahl der Trees, die Du haben möchtest. Aufräumen nicht vergessen.greetz, Swordfish
-
Swordfish schrieb:
Tree *trees = malloc( n * sizeof( *trees ) );
Den Rückgabewert von
malloc( )
castet man nicht!n
ist die Anzahl der Trees, die Du haben möchtest. Aufräumen nicht vergessen.greetz, Swordfish
Man muss nicht casten. Das man das nicht tut, sagst du einfach so.
Wenn man castet, wird das ganze vom Compiler kontrolliert und evtuelle Fehler werden bemerkt.
//Ohne Cast: (Der Compiler bemerkt den Fehler nicht) long *int_ptr=malloc(sizeof(short)); //Mit Cast: (Der Compiler bemerkt den Fehler.) long *int_ptr=(short *)malloc(sizeof(short));
-
Das Alles und Jeder schrieb:
//Mit Cast: (Der Compiler bemerkt den Fehler.)
long *int_ptr=(short *)malloc(sizeof(short));[/cpp]bemerkt er den auch?
char p = (char)malloc(sizeof(char*));
-
Das Alles und Jeder schrieb:
Das man das nicht tut, sagst du einfach so.
Ja, das sag' ich einfach so, weil es hier schon oft genug diskutiert wurde.
greetz, Swordfish
-
-
Danke Tim
greetz, Swordfish
-
Also das heißt man muss nicht casten?
Aber wenn ich mit C++ compiler etwas mache, dann muss ich casten stimmts?
mfg Ercan
-
e-izmir-a schrieb:
Also das heißt man muss nicht casten?
natürlich nicht. In C castet man void-Zeiger nicht.
e-izmir-a schrieb:
Aber wenn ich mit C++ compiler etwas mache, dann muss ich casten stimmts?
C != C++ und es ist eine sau blöde Idee, C Code mit einem C++ Compiler zu übersetzen.
-
Nicht so ganz... Ich programmiere gerade eine lib der aber auch mit dem c++ compiler funktionieren soll
noch eine frage...
Ich weiß jetzt das man so trees alloziert:
Tree *trees = malloc( n * sizeof( *trees ) );
Und wie schauts aus wenn ich eine zweidimensionale array allozieren will?
also so schauts gerade aus:
float height[300][300];
Wie mache ich das mit malloc jetzt?
mfg Ercan