标准库是一个标准,怎么实现没有定义。所以要写跨STL的代码也要主要。比如string就是个问题。实现是否采用了引用计数等都是未知的。至于是否使用我现在不是很清楚,好像VC6中标准库使用了引用计数,但是后来就不再使用引用计数。
找到一个关于去除VC6的string引用计数的方法:
解决 Microsoft Visual C++ 6.0 STL 中 Std::String 类问题
如果执行不升级到新版的 STL, 您可以尝试纠正 std::string 类线程安全问题标准 Microsoft VisualC++6.0 安装中。虽然有是与几个 Microsoft Visual C++ 6.0 STL, 中类 multi-threading 问题为止最常见和问题均为 std::string 类。禁用字符串引用计数。 每个变通本节中介绍要求您先禁用引用计数机制。 要禁用引用计数, 您必须修改 < xstring > 头文件, _FROZEN 枚举常量设置为 0 。 此外默认安装, < xstring > 头文件位于以下位置: C:/ProgramFiles/Microsoft files/Microsoft Visual Studio/VC98/Include 将 _FROZEN 枚举常数更改为 0 在行 62 页 < xstring > 头文件中以便它与以下类似: enum _Mref {_FROZEN = 0}; // set to zero to disable sharing; original value 255
如果您按照此建议, 并重建所有软件使用这些头文件 std::string 类代码将是多线程。 有一些警告到该语句。 因此, 仔细阅读以下变通办法说明。 禁用引用计数通过在 < xstring > 头文件, _FROZEN 枚举常量设置为 0 后使用下列方法之一来解决此问题。