PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++: Objekt-Speicher wiederverwenden


mekakic
2008-09-23, 08:22:37
Hi,

ich muß häufig sehr große Speicherbereiche (4MB am Stück) verwenden. Diese sind immer wieder gleich groß und es werden immer nur eine Obergrenze an diesen Bereichen gleichzeitig benötigt. Die Idee war jetzt einen großen Speicher immer wieder zu verwenden um die ganzen new-Aufrufe zu sparen, allerdings frage ich mich, ob man irgendwie die Objektkonstruktoren auf diesem Speicherbereich aufrufen kann, ohne diese erst in einem anderen Speicher zu erzeugen und dann umzukopieren?

danke

Crystallion
2008-09-23, 11:15:10
Wenn es sich jedes Mal um denselben Objekttyp handelt könntest Du eine Methode in dessen Klasse einbauen, die alle Felder mit neuen, übergebenen Werten belegt. Faktisch müsstest Du damit Dein Ziel erreichen.

RLZ
2008-09-23, 12:30:47
ich muß häufig sehr große Speicherbereiche (4MB am Stück) verwenden. Diese sind immer wieder gleich groß und es werden immer nur eine Obergrenze an diesen Bereichen gleichzeitig benötigt. Die Idee war jetzt einen großen Speicher immer wieder zu verwenden um die ganzen new-Aufrufe zu sparen, allerdings frage ich mich, ob man irgendwie die Objektkonstruktoren auf diesem Speicherbereich aufrufen kann, ohne diese erst in einem anderen Speicher zu erzeugen und dann umzukopieren?
Dem new-Operator kannst du ne Speicheradresse mitgeben. Dann wird nichts allokiert.

Trap
2008-09-23, 13:19:39
Genau, das heißt dann "placement new", damit du einen Begriff zum Suchen hast :)

Gauß
2008-09-23, 16:50:21
Boost Pool Bibliothek (http://www.boost.org/libs/pool/doc/index.html) :up: