0

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

但是,std::string 是可动态调整大小的 object。对我来说,这与包含 std::string 的动态分配对象背道而驰:如果 std::string 比计划的大,则可能分配内存溢出。

  • 我能否请教 std::string 是否适合作为动态分配对象的参数?
  • 如何用std::string进行操作,不会出现内存溢出?
  • 即使将动态分配数百个对象,std::string 是否适合作为成员参数?
4

1 回答 1

1

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

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

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

于 2011-02-16T08:31:03.907 回答