Ich möchte mein eigenes dynamisches Speicherverwaltungssystem implementieren, um neue Funktionen hinzuzufügen, die zur Speicherverwaltung in C++ beitragen.Wie werden malloc und free implementiert?
Ich benutze Windows (XP) und Linux (Ubuntu). Was ist erforderlich, um Funktionen wie "malloc" und "free" zu implementieren? Ich denke, dass ich die niedrigsten Systemaufrufe verwenden muss.
Für Windows habe ich die Funktionen gefunden: GetProcessHeap, HeapAlloc, HeapCreate, HeapDestroy und HeapFree.
Für Linux habe ich keine Systemaufrufe für Heap-Management gefunden. Unter Linux sind malloc und free Systemaufrufe, nicht wahr?
Dank
Edit:
C++ bietet keine Garbage Collector und Garbage Collector ist langsam. Einige Zuordnungen sind leicht zu befreien, aber es gibt Zuordnungen, die einen Garbage Collector benötigen.
Ich möchte diese Funktionen implementieren und neue Features hinzufügen:
* Immer wenn free() aufgerufen wird, überprüfen Sie, ob der Zeiger zu Heap gehört.
* Hilfe bei der Garbage Collection. Ich muss einige Informationen über den zugewiesenen Block speichern.
* Verwenden Sie mehrere Heaps (HeapCreate/HeapDestroy unter Windows). Ich kann einen ganzen Haufen mit seinen zugewiesenen Blöcken schnell löschen.
Sie sollten sich Boos Pools Allokatoren ansehen: http://www.boost.org/doc/libs/1_43_0/libs/pool/doc/index.html –
Sind Sie sicher, dass HeapAlloc ein System (Kernel) Aufruf ist? Diese können auf der Benutzerseite implementiert werden und einige verborgene Funktionen des privaten Kernels auslösen, wenn der Prozess mehr Speicher benötigt. – doron
Squall - das klingt merkwürdig wie eine Hausaufgabe aus dem Wortlaut. Ja? Nein? –