C++ STD::string作为动态分配对象的成员参数
我希望动态分配对象集(可以是几百个)。这些对象的一部分是文本字段。因为std::string提供了很好的字符串操作,所以我更喜欢使用类型为std:string的对象成员参数 但是,std::string是可动态调整大小的对象。对我来说,这与包含std::string的动态分配对象相违背:如果std::string大于计划值,则可能会出现分配内存溢出C++ STD::string作为动态分配对象的成员参数,c++,string,memory-management,std,stdstring,C++,String,Memory Management,Std,Stdstring,我希望动态分配对象集(可以是几百个)。这些对象的一部分是文本字段。因为std::string提供了很好的字符串操作,所以我更喜欢使用类型为std:string的对象成员参数 但是,std::string是可动态调整大小的对象。对我来说,这与包含std::string的动态分配对象相违背:如果std::string大于计划值,则可能会出现分配内存溢出 我可以请教一下std::string是否适合作为动态分配对象的参数吗 如何使用std::string进行操作,这样就不会出现内存溢出 即使动态分配
- 我可以请教一下std::string是否适合作为动态分配对象的参数吗李>
- 如何使用std::string进行操作,这样就不会出现内存溢出李>
- 即使动态分配数百个对象,std::string是否适合作为成员参数
- 您的问题有点难解析,我认为示例代码会让解析变得更容易。假设您有一个包含字符串的类,这样做对吗:
class foo {
public:
std::string str;
};
您想知道字符串的大小是如何调整的?让我试着解释一下:
foo类对象的大小是固定的。字符串成员的大小也是固定的,但它在实现中包含一个指向附加动态内存(其他地方)的指针,该内存根据字符串的内容而增长或收缩。std::string的实现为您解决了这一问题,您不必担心。也不会出现任何内存溢出-例如,字符串的内存块与foo对象使用的内存块不同。谢谢您的评论。你很理解我的问题,并且回答了。我理解这一点,我明白了,我不必担心调整std::字符串的大小。我将此答案标记为可接受答案,并添加+1。