(Andere Comp...) mehr als 64k Speicher allocieren
-
Hallo zusammen,
ich programiere zur Zeit mit Borland TurboCProblem:
ich muß ein Array von unsigned Char mit einer Größe von 440000 allocierenunsigned char *xyz; xyz = malloc(440000); if(!xyz) printf("das war wohl nix");
Obiger Code funktioniert nur bis 64k - gut malloc kann halt nicht mehr...
deshalb habe ich das selbe auch mit farmalloc probiert - FehlanzeigeSelbst folgender Code funktioniert nicht:
unsigned char *xyz1, *xyz2; xyz1 = malloc(60000); // das geht noch gut if(!xyz1) printf("das war wohl nix"); xyz2 = malloc(60000); // das geht NICHT mehr gut!!!! :-( if(!xyz2) printf("das war wohl nix");
Kann man wirklich nur insgesamt 64k allocieren - oder mache ich etwas falsch???
Schon mal danke
Poolplayer
-
ich glaub, dass liegt einfach daran, dass Borland Turbo C ein DOS Compiler ist und DOS ein RealMode OS und du deswegen nicht so viel Speicher addressieren kannst. Wenn du kannst, solltest du lieber mal den Compiler wechseln. Du kannst dir mal mingw oder den djgpp angucken.
Ist aber kein ANSI C Problem
-
Ich habe es gerade mit gcc unter Linux probiert - da kann ich beliebig viel Speicher allocieren...
Doch leider soll unser Projekt (Technikerschule) unter DOS laufen.
Heißt das jetzt, daß ich wirklich keine Chance habe?
Gruß
Poolplayer
P.s.: Da ich hier neu bin - wo hätte ich diese Frage denn posten sollen?
-
Gab's bei Turbo C nicht verschiedene Speichermodelle? Je nachdem, welches Modell ausgewählt wurde, hatte man mehr oder weniger Speicher zur Verfügung... (zumindest ist das bei Turbo C++ 3.x so gewesen).
Vielleicht lässt sich Dein Problem aber auch mit weniger als 64KB Speicher lösen ...
Original erstellt von poolplayer:
.... ich hier neu bin - wo hätte ich diese Frage denn posten sollen?Im Forum für Andere Compiler;