3

我有一个需要 (char* const*) 的函数。我提供的数据在 std::string 中。所以我这样做:

void blahblah(std::string str)
{
   const char * cc = str.c_str();
   ConstCharFunction(&cc);
}

这很好用。我的问题是我是否需要清理 const char ala 使用的内存:

delete cc;

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

4

2 回答 2

5

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

于 2015-06-02T16:58:32.410 回答
2

不,你不需要delete cc。它确实是std::string对象持有的指针。

这里

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

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

请注意,c_str()通过调用字符串的修改方法可能会使返回的指针无效。

于 2015-06-02T17:01:10.167 回答