Speichervverwaltung
-
Hey!
Ich habe ein Szenario, in dem das Anfordern von Speicher über das System sehr teuer ist.
Deswegen möchte ich einen größeren Block anfordern und selbst verwalten.
Ich dachte daran, anfangs 1 MB anzufordern und immer, wenn die Größe überschritten wird, zu verdoppeln.Jetzt stell ich mir nur die Frage, was es an unkomplizierten Konzepten gibt um den Speicher zu verwalten. Das Hauptproblem ist es wohl, immer freien Speicher zu finden ohne dass der Speicher zu stark fragmentiert.
Hat da jemand etwas zum Lesen für mich?
Danke schon mal!
Grüße,
Ethon.
-
Hast du schon hier geschaut? Hat recht viele Links, auch zu verwandten Stichworten wie Buddy-Algorithmus, Memory-Pools etc. Eventuell kannst du auch Boost.Pool benutzen, wobei ich mich damit nicht auskenne.
-
In Modern C++ Design wird so ein Allokator entworfen (ähnlich wohl zu Boost.Pool). Ansonsten ist vielleicht folgendes interessant für dich: http://goog-perftools.sourceforge.net/doc/tcmalloc.html
-
@Ethon:
Jede mir bekannte C++ Implementierung bringt das schon mit, wieso willst du es selbst programmieren?
-
Danke für die Antworten.
Ich finde vor allem das mit den Buddies recht interessant, werde das mal probieren.@Ethon:
Jede mir bekannte C++ Implementierung bringt das schon mit, wieso willst du es selbst programmieren?Das Problem ist, dass der Speicher in einem fremden Speicherbereich liegt.
Dadurch ist der Speicher in dem Moment rein theoretisch.