moin
Ich hab das bisher so verstanden, das der Speicher den malloc verwaltet in einer art verkettten liste verwaltet wird. Vor jedem Speicherbereich ist eine kleine Datenstrucktur die Auskunft über grösse des Speicherbereiches, den vorherigen und nachfolgenden Datensatz auskunft gibt. Insgesamt werden 2 listen verwaltet, die des freien speichers, und die des belegten speichers. wird speicher angefordert, wird eine neue datenstruktur angelegt, oder eine aus der liste des Freienspeichers verwendet, und in der Liste des belegten speichers eingetragen. Entsprechend wird dann aus der liste des Freispeichers der bereich entfernt. Wird der speicher wieder freigegeben, wandert der eintrag in die liste des Freien speichers.
deine map hat ein Problem, wenn mehr Speicher angefordert wird, als in einer page platz hat, geht das nicht die verwaltungsstruktur liegt dann irgendwo dazwischen. Du limitierst damit den maximal anzufordernden speicher auf page size - verwaltungsdaten.