mmap-Ersatz für malloc

Muss ich einen Weg finden, um mmap anstelle von malloc. Wie ist das möglich? (Ich bin nicht mit der libc nur syscalls) Und ja brk() ist möglich. Ich verwendet, sbrk (), aber erkannte seine nicht, sys-call... (x86 inline-Montage)

Ich habe auf der Suche um und sah dieses: Wie zu verwenden mmap zuweisen von Speicher im heap?, Aber es hat nicht helfen, denn für mich hatte ich einen segfault.

Im Grunde, alles was ich will zu tun, ein schaffen, 3 Platten, Speicher für die Speicherung von Zeichen.

Sagen,

char * x = malloc(1000);
char * y = malloc(2000);
char * z = malloc(3000);

Wie ist das möglich, mit mmap und wie frei es später mit munmap?

  • kernel.org/doc/man-pages/online/pages/man2/sbrk.2.html ist ein Systemaufruf, sondern als veraltet ein.
  • die glibc malloc verwendet mmap gegebenenfalls (zum Beispiel, wenn die Menge der bytes, die zu reservieren ist jenseits einer bestimmten Schwelle)
  • entnommen aus der malloc-Mann-Seite: Normalerweise malloc() reserviert Speicher auf dem heap, und passt die Größe des heap als erforderlich, mit sbrk(2). Bei der Zuteilung von Blöcken von Speicher, die größer als MMAP_THRESHOLD bytes, die glibc malloc () - Implementierung den Speicher reserviert, wie eine private anonyme Zuordnung mithilfe von mmap(2). MAP_THRESHOLD ist 128 kB standardmäßig, aber ist einstellbar über mallopt(3). Zuweisungen durchgeführt unter Verwendung von mmap(2) unberührt von der RLIMIT_DATA resource limit (siehe getrlimit(2)).
  • Wie sind Sie nicht mit libc? mmap und malloc sind libc-Aufrufe.
  • malloc ist in der Tat ein standard libc Funktion, aber mmap ist ein system nennen, genannt werden kann, ohne Bibliothek.... wie Flexo-Antwort zeigt....
InformationsquelleAutor Kalon | 2013-02-09
Schreibe einen Kommentar