0

我想知道是否有某种方法可以告诉std::string释放char*正在使用的。

我想它的某个地方std::string有一个 type 字段char*,我想要一些类似的方法:

const char* std::string::release() {
    const char* result = __str;
    __size = 0;
    __capacity = INITIAL_CAPACITY_WHATEVER;
    __str = new char[INITIAL_CAPACITY_WHATEVER];
    return result;
}

并不是说复制内容是一个问题或会影响我的表现,我只是对浪费时间复制我将要删除的内容感到不舒服。

4

1 回答 1

2

如果您使用的是 C++11,则可以使用std::move将一个字符串对象的内容移动到另一个字符串对象。这避免了复制的开销。

std::string s1 = "hello";
std::string s2(std::move(s1));

但是,您不能直接将内部char*缓冲区与std::string. 该std::string对象拥有内部char*缓冲区,并在调用析构函数时尝试释放它。

于 2013-02-07T01:04:14.600 回答