2011-02-15 62 views
0

我想動態分配對象集(可以是幾百)的。這些對象的一部分是文本字段。由於std :: string提供了很好的字符串操作,我傾向於使用類型的對象成員參數std:string的std :: string作爲會員參數動態分配的對象

然而,的std :: string是動態調整大小的對象。對我來說,這違背了包含std :: string的動態分配對象:如果std :: string比計劃大,可能會分配內存溢出。

  • 我可以問一下建議:std :: string是否適合作爲動態分配對象的參數?
  • 如何使用的std :: string操作,所以不會有內存溢出?
  • 適合作爲即使上百個對象將被動態分配的成員參數的std :: string?

回答

1

你的問題有點難以解析,而且我認爲,示例代碼會讓事情變得簡單。我是正確的假設,你有一個包含字符串類,像這樣:

class foo { 
    public: 
    std::string str; 
}; 

,你不知道該字符串是如何調整?讓我試着解釋一下: foo類的對象的大小是固定的。字符串成員的大小也是固定的,但它的實現中包含一個指向附加動態內存(其他地方)的指針,它根據字符串的內容增長或縮小。 std :: string的實現爲你處理這個問題,你不需要擔心它。也不會有任何內存溢出 - 例如,字符串的內存與foo對象使用的內存塊是不同的內存塊。

+0

謝謝你的評論。你很好地理解我的問題,並接受它。我明白了這一點,我明白了,我不必擔心調整std :: string的大小。我將此答案標記爲* Accptable Answer *並添加+1。 – 2011-02-16 11:30:28