简单的字符串问题

时间:2010-11-12 15:01:43

标签: c++ string

如果我使用operator =分配了一个新值以前声明的字符串,它是自动释放还是我必须手动释放它?


std::string s("value_old");
s = "value_new";

“value_old”会发生什么 我可以在哪里找到或者你总是在哪里寻找类似问题的答案?提前谢谢。

5 个答案:

答案 0 :(得分:8)

std :: string处理它自己的内存,因此当你使用s =“value_new”时,字符串“value_old”被发送到遗忘。

答案 1 :(得分:5)

是的,它会自动释放。

我建议cplusplus.com提供一个方便的在线参考STL。

答案 2 :(得分:1)

旧值被释放,s变为new_value

从源代码std::string中删除旧值(来自erase()方法),新值为inserted并返回引用字符串。请参阅assign()方法。

答案 3 :(得分:1)

一般情况下:如果您使用的是std::string,则无需担心。它将照顾到这一点。

在您的具体案例中:您的std::string实施很可能会回收"string_old"的内存,并将其重新用于"string_new"

答案 4 :(得分:1)

std::string管理实际数据并负责内存管理。

我在哪里可以找到或在哪里一直在寻找类似问题的答案?

对于这些问题,我会推荐一本简单的C ++书籍。这个post上有一个列表,但我认为“C ++语言”(Bjarne Stroustrup)是一个很好的选择。