bk1*_*k1e 14
更多内存控制说明:
C字符串是POD类型,因此可以在应用程序的只读数据段中分配它们.如果std::string在命名空间范围内声明和定义常量,编译器将生成在main()调用std::string每个常量的构造函数之前运行的其他代码.如果您的应用程序有许多常量字符串(例如,如果您生成了使用常量字符串的C++代码),则在这种情况下可能更喜欢C字符串.
某些实现std::string支持称为SSO("短字符串优化"或"小字符串优化")的功能,其中std::string该类包含最多一定长度的字符串的存储.这增加了大小,std::string但通常会显着降低免费存储分配/解除分配的频率,从而提高性能.如果您的实现std::string不支持SSO,那么std::string在堆栈上构造一个空的仍将执行自由存储分配.如果是这种情况,使用临时堆栈分配的C字符串可能对使用字符串的性能关键代码有帮助.当然,当你这样做时,你必须小心不要在脚上射击.