代码之家  ›  专栏  ›  技术社区  ›  Yevhen

简单字符串问题

  •  2
  • Yevhen  · 技术社区  · 14 年前

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

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

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

    5 回复  |  直到 14 年前
        1
  •  5
  •   egrunin    14 年前

    是的,它会自动释放。

    我建议 cplusplus.com

        2
  •  8
  •   badgerr    14 年前

    string处理它自己的内存,所以当您使用s=“value_new”时,字符串“value_old”被发送到oblivion。

        3
  •  1
  •   sbi    14 年前

    一般来说:如果你使用 std::string

    在你的具体案例中:很可能是 实现将回收它所拥有的内存 "string_old" ,重新使用它 "string_new" .

        4
  •  1
  •   Community dbr    7 年前

    这个 std::string

    我在哪里可以找到,或者你总是在哪里寻找类似问题的答案?

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

        5
  •  1
  •   Buhake Sindi Tesnep    14 年前

    旧值被释放,s变成 new_value

    从源代码 std::string ,将删除旧值(从 erase() inserted 返回一个引用字符串。见 assign() 方法。