我希望动态分配一组对象(可以是几百个)。这些对象的一部分是文本字段。因为std :: string提供了很好的字符串操作,所以我更喜欢使用 std:string 类型的对象成员参数。
但是, std :: string是动态可调整大小的对象。对我来说,这违反了包含std :: string的动态分配对象:如果std :: string变得比计划大,可能会分配内存溢出。
答案 0 :(得分:1)
我认为你的问题有点难以解析,示例代码会让这更容易。我是否正确地假设您有一个包含字符串的类,如下所示:
class foo {
public:
std::string str;
};
你想知道如何调整字符串的大小?让我试着解释一下: 类foo的对象大小是固定的。字符串成员的大小也是固定的,但它在其实现中包含一个指向其他动态内存(其他地方)的指针,它正在增长或缩小,具体取决于字符串的内容。 std :: string的实现为您解决了这个问题,您无需担心它。也不会有任何内存溢出 - 例如,字符串的内存是与foo-object使用的块不同的内存块。