C++ 使用c_str()和const char正确清理内存*

C++ 使用c_str()和const char正确清理内存*,c++,memory-management,stdstring,const-char,C++,Memory Management,Stdstring,Const Char,我有一个接受(char*const*)的函数。我提供的数据是std::字符串。所以我要这样做: void blahblah(std::string str) { const char * cc = str.c_str(); ConstCharFunction(&cc); } 这很有效。我的问题是我是否需要清理const char ala使用的内存: delete cc; 或者cc只是一个指向std:string中mem位置的指针 它是一个指向std::string中分配的

我有一个接受(char*const*)的函数。我提供的数据是std::字符串。所以我要这样做:

void blahblah(std::string str)
{
   const char * cc = str.c_str();
   ConstCharFunction(&cc);
}
这很有效。我的问题是我是否需要清理const char ala使用的内存:

delete cc;

或者cc只是一个指向std:string中mem位置的指针

它是一个指向std::string中分配的内存的指针。当std::字符串超出范围时,内存被释放。之后一定不要抓住指针

不,您不需要
删除cc
。它实际上是由
std::string
对象持有的指针

程序不得改变此序列中的任何字符

指针返回指向字符串对象当前用于存储符合其值的字符的内部数组


只需小心,
c_str()
返回的指针可能会通过调用字符串的修改方法而失效。

如果不修改,为什么要将
std::string
作为副本传递?能否提供一个引用,以释放内存?对于引用计数指针,您可能需要类似于
共享\u ptr
的东西。看见