使用 c_str() 和 const char * 进行适当的内存清理

Proper memory cleanup with c_str() and const char *

我有一个接受 (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 中内存位置的指针...

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

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

here

A program shall not alter any of the characters in this sequence.

The pointer returned points to the internal array currently used by the string object to store the characters that conform its value.

请注意,c_str() 返回的指针可能会因调用字符串的修改方法而失效。