2011-03-09 42 views

回答

10

默認情況下,它們全部使用std::allocator,它使用標準內存例程來獲得可用堆塊。這一層沒有涉及任何池。 (但是,大多數堆實現使用專用的低碎片堆來提供小分配,並且字符串最可能屬於此類別,但這是依賴於實現的,並不是專有或優化的std::string s ... )。

+0

謝謝,沿着什麼,我想知道這行的。 –

2

如果不指定一個,C++的不同實例會使用相同的分配器。你可能指的是在java/python中標準的字符串實習。如果是這樣,否。沒有「標準」設施。但是它很容易增加,如果頻繁地創建/銷燬是一個問題

http://en.wikipedia.org/wiki/String_interning

+0

同一個分配器的不同實例,但是從C++ 03開始,給定分配器類型的所有實例都是等價的,即應該能夠釋放由另一個分配器分配的內存。這通常意味着它們實際上是從同一個地方分配和釋放的。 C++ 0x中的這一更改。 –

相關問題