CString Memory Pool
-
Hi
Wie kann ich für einen CString einen Memory Pool anlegen?
Das wäre meiner Ansicht nach sehr nützlich, da ja bei ständiger Vergrößerung des Buffers (wie es in meinem Programm geschieht) der Speicher auch mehr oder weniger stark fragmentiert wird.
Wenn ich also gleich bei der Initialisierung des CStrings ein paar MB für ihn reserviere sollte das Problem beseitigt sein.
Hat irgendwer ne Idee wie ich das anstellen kann? Möglichst auch ohne CString Pointer?Danke schon mal,
Frohe Weihnachten! :xmas1:
-
Das ist so einafach nicht möglich.
Dir neuen CString templates von VS2003+2005 erlauben dies, denn die haben eine Basis Klasse, die für die entsprechende Allokation verantwortlich sind.Aber mein Rat: Vergiss es. Die CRT und der Heapmanager können das was Du vorhast besser. Sorge einfach dafür, dass ein CString sogleich so groß ist wie sein zukünftiger Inhalt. Damit er eben nicht dynamisch wachsen muss. (GetBuffer)
Ansonsten gibt es einige andere Ansätze:
http://www.codeguru.com/cpp/cpp/string/alts/article.php/c2781/Du kannst std::sring verwenden und einen eigenen Allocator bauen!
-
Martin Richter schrieb:
Sorge einfach dafür, dass ein CString sogleich so groß ist wie sein zukünftiger Inhalt. Damit er eben nicht dynamisch wachsen muss. (GetBuffer)
Ich denke genau das meit er eigentlich

Er spricht ja vom "dem" CString, also Einzahl. Also GetBuffer.