如果我使用operator =分配了一个新值以前声明的字符串,它是自动释放还是我必须手动释放它?
std::string s("value_old");
s = "value_new";
“value_old”会发生什么 我可以在哪里找到或者你总是在哪里寻找类似问题的答案?提前谢谢。
答案 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)是一个很好的选择。