Speicherreservierung mit malloc und farmalloc
-
Gletz
ich schreibe gerade ein kleines Programm, und bin beim reservieren von Arbeitsspeicher mit malloc auf ein kleines Problem gestoßen.
Gut es geht einfach darum, wie reserviere ich mir mit malloc einen Speicherbreich
der größer als ein MB ist? Im moment weiche ich auf die Dos und Windows kopatieble Funktion farmalloc aus, doch ich würde gerne wissen wie man dies mit malloc oder einer anderen ansi c funktion loessen kann. Oder handelt es sich dabei wieder um eine dieser Ansi c Beschränkdungen, wie mit Textposizunierung, Port funktionen, und graphik funktionen?thx
Editiert:
Ok mein Fehler, ich hab mich noch etwas im Forum umgeschaut und hab herausgefunden das das oben beschriebene Problem wohl um kein Ansi C
sondern um ein Compiler abhängiges Problem handelt.
-
#include <stdlib.h> #include <stdio.h> int main(int argc, char* argv[]) { void * p = malloc (1024 * 1024 * 512); getchar (); free (p); return 0; }
Belegt bei mir 512MB Speicher und gibt ihn anschließend wieder frei, ohne Probleme.
Das Problem ist vllt. weil dein Speicher stark fragmentiert ist und der größte
zusammenhängende Block 1MB beträgt.Edit:
Sehe gerade hat sich bereits erledigt