STD :: string作为动态分配对象的成员参数

时间:2011-02-15 16:05:00

标签: c++ string memory-management std stdstring

我希望动态分配一组对象(可以是几百个)。这些对象的一部分是文本字段。因为std :: string提供了很好的字符串操作,所以我更喜欢使用 std:string 类型的对象成员参数。

但是, std :: string是动态可调整大小的对象。对我来说,这违反了包含std :: string的动态分配对象:如果std :: string变得比计划大,可能会分配内存溢出。

  • 请问std :: string是否适合作为动态分配对象的参数?
  • 如何使用std :: string进行操作,这样就不会有内存溢出?
  • 即使动态分配数百个对象,std :: string是否适合作为成员参数?

1 个答案:

答案 0 :(得分:1)

我认为你的问题有点难以解析,示例代码会让这更容易。我是否正确地假设您有一个包含字符串的类,如下所示:

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

你想知道如何调整字符串的大小?让我试着解释一下: 类foo的对象大小是固定的。字符串成员的大小也是固定的,但它在其实现中包含一个指向其他动态内存(其他地方)的指针,它正在增长或缩小,具体取决于字符串的内容。 std :: string的实现为您解决了这个问题,您无需担心它。也不会有任何内存溢出 - 例如,字符串的内存是与foo-object使用的块不同的内存块。