c++ - std::string 分配何时在初始化时发生

标签 c++ visual-studio

当我在类中创建一个std::string 成员变量时,是否在实例化时已经分配了默认内存?还是 std::string 延迟分配直到它被实际使用?

我目前正在使用 Visual Studio 2010,我注意到,当我创建一个空字符串时:

  std::string s0;
  std::string s1 = "";

两者都有容量 == 15 套。那么这是否意味着它已经分配了 15 个字节的内存?如果是,我可以阻止这种情况以便不分配内存吗?

这会是跨不同编译器的特定实现吗?

最佳答案

标准未指定空 std::string 的初始容量,并且取决于实现。

许多实现会分配大约 16 个字符的初始容量(是的,容量是指分配的内存)。

关于c++ - std::string 分配何时在初始化时发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32695489/

相关文章:

C++ -- 指向数组的指针 -- 指针数组

c# - 使用 Copy Local 引用另一个项目的引用

c++ - Visual Studio (f2c) 中带有静态库的未解析外部

c++ - Template 模板方法的特化

c++ - 如何在 C++ 中获取内存位置而不等待其检索?

c++ - C++ 中带有头文件的错误

c# - 在 Visual Studio 2010 中为 IE 中的 BHO 使用断点

c - fatal error C1083 : Cannot open include file: 'aux.h' : Permission denied

.net - 嵌入式 Lua "print"无法在 Visual Studio 的 Debug模式下工作

C++ visual studio 函数语法高亮显示