相关疑难解决方法(0)

什么是GCC的"vstring"?

我读了一些GCC bugreport,那里有人在谈论"vstring".搜索WEB我注意到http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/vstring_8h.html.

有人可以详细说明它有用和用于什么?为什么用它代替std :: string?

c++ gcc

22
推荐指数
1
解决办法
7035
查看次数

为什么在GCC 5.1中仍然启用了COW std :: string优化?

根据GCC 5发布更改页面(https://gcc.gnu.org/gcc-5/changes.html):

默认情况下,使用小字符串优化而不是写入时复制引用计数来启用std :: string的新实现

我决定检查它并写了一个简单的程序:

int main()
{
    std::string x{"blah"};
    std::string y = x;
    printf("0x%X\n", x.c_str());
    printf("0x%X\n", y.c_str());
    x[0] = 'c';
    printf("0x%X\n", x.c_str());
    printf("0x%X\n", y.c_str());
}
Run Code Online (Sandbox Code Playgroud)

结果是:

0x162FC38
0x162FC38
0x162FC68
0x162FC38
Run Code Online (Sandbox Code Playgroud)

请注意,x [0] ='c'后x.c_str()指针会发生变化.这意味着在写入时复制内部缓冲区.所以似乎COW仍然在工作.为什么?

我在Ubuntu上使用g ++ 5.1.0.

c++ string gcc copy-on-write c++11

5
推荐指数
1
解决办法
1648
查看次数

标签 统计

c++ ×2

gcc ×2

c++11 ×1

copy-on-write ×1

string ×1