gpt4 book ai didi

c++ - 是否必须释放 std::string.c_str() 或 std::string.data() 返回的指针?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:30 25 4
gpt4 key购买 nike

据我所知,当您调用 c_str()/data() 时,std::string 会创建其内容的标识数组拷贝 方法(有/没有终止 NUL-char,在这里无关紧要)。不管怎样,对象是否也负责释放这个数组,还是我必须这样做?

简而言之:

std::string hello("content");

const char* Ptr = hello.c_str();

// use it....

delete[] Ptr; //// really ???

我只是想在内存分配方面保持安全。

最佳答案

不,您不需要释放 ptr 指针。

ptr 指向位于内部位置某处的不可修改字符串(实际上这是编译器的实现细节)。


引用:

C++ documentation :

const char* c_str ( ) const;

获取等效的 C 字符串

生成与字符串对象具有相同内容的以 null 结尾的字符序列(c 字符串),并将其作为指向字符数组的指针返回。

自动附加终止空字符。

返回的数组指向一个内部位置,该位置具有此字符序列及其终止空字符所需的存储空间,但此数组中的值不应在程序中修改,只能保证保留在下一次调用字符串对象的非常量成员函数之前保持不变。

关于c++ - 是否必须释放 std::string.c_str() 或 std::string.data() 返回的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7460753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com