<分区>
关于std::string::c_str
的文档说:
“返回一个指向数组的指针,该数组包含表示字符串对象当前值的空终止字符序列(即 C 字符串)。”
这个数组是在调用 c_str 时动态分配的吗?如果不是,它从何而来?
<分区>
关于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/