String 是gcc';s std::字符串COW线程安全?

String 是gcc';s std::字符串COW线程安全?,string,gcc,stl,clang,copy-on-write,String,Gcc,Stl,Clang,Copy On Write,我使用gcc进行了测试,并确认gcc的std::string实现了COW: #include <string> #include <iostream> int main() { std::string a(50, 'c'); std::string b = a; *const_cast<char*>(a.c_str()) = 'A'; std::cout << "a: " << a << "\nb: "

我使用gcc进行了测试,并确认gcc的std::string实现了COW:

#include <string>
#include <iostream>

int main() {
  std::string a(50, 'c');
  std::string b = a;

  *const_cast<char*>(a.c_str()) = 'A';
  std::cout << "a: " << a << "\nb: " << b << std::endl;
}

b换成了a。如果使用clang或VC,测试结果会有所不同。所以我想知道gcc的字符串COW是否是线程安全的?在多线程环境中使用std::string可以吗?

这是什么GCC版本?我无法使用最新版本复制:。此外,还有许多重复。如果你不想升级C++库,你可以通过搜索THead Stand:STRIGN来阅读一些SO的集体智慧。我无法使用最新版本复制:。此外,还有许多重复。如果你不想升级C++库,你可以通过搜索THead Stand:STRIGN来阅读一些SO的集体智慧。
a: Accccccccccccccccccccccccccccccccccccccccccccccccc
b: Accccccccccccccccccccccccccccccccccccccccccccccccc