c++ - 使用 `std::string::c_str` 是否返回动态分配的数组?

标签 c++ string dynamic-allocation

<分区>

关于std::string::c_str 的文档说:

“返回一个指向数组的指针,该数组包含表示字符串对象当前值的空终止字符序列(即 C 字符串)。”

这个数组是在调用 c_str 时动态分配的吗?如果不是,它从何而来?

最佳答案

对于 C++2003,这取决于标准库实现。它的实际存储很可能由 std::string 的实例管理。有些实现可能使用内部缓冲区,有些可能使用单独的预分配缓冲区。虽然它是一个恒定时间访问器,因此可用于库实现的选项是有限的。

你不应该在标准允许你做的事情之外乱搞那些内存,因为你可能会因为标准库的不同实现而一败涂地。

有趣的是,对于 C++11,这有更多的定义,它必须指向内部缓冲区并且是 std::string::data 的同义词。

关于c++ - 使用 `std::string::c_str` 是否返回动态分配的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16136427/

相关文章:

java - Java中字符串到整数的解决方案

java - Java中.indexOf方法的算法选择

javascript - JS/NodeJS JSON 缓冲区到字符串

c - 查找数组中的最大元素

c++ - 使用 new 运算符创建用户输入大小的数组

c++ - 抑制单行的弃用警告

c++ - 模板函数内的静态变量

c++ - 在临时指针上使用 "delete"后程序崩溃,即使只剩下新行和删除行?

c++ - 在哪里定义/声明比较运算符的重载为库中的非成员函数?

c - 释放分配的内存时堆损坏