c ++ char数组是否超出范围?

Jac*_*ble 1 c++ memory-management stl

我有一个方法,需要一个const char指针作为输入(不是null终止).这是我在我的项目中使用的库(TinyXML)的要求.我从string.c_str()方法调用中获取此方法的输入.

是否需要删除此char指针?呼叫完成后,字符串立即超出范围; 所以字符串应该用析构函数调用删除它,对吗?

Log*_*ldo 10

不要删除从std :: string :: c_str获得的内存.字符串负责(并且它完全有可能它给你一个指向其内部缓冲区的指针,所以如果你删除它,那将是一件坏事(tm)).


Tom*_*Tom 8

string.c_str()返回的char数组是nul终止的.如果tinyXML的函数需要一个非空终止的char*缓冲区,那么你可能会得到一些意想不到的行为.

const char*c_str()const;

获取C字符串等效项

生成以字符串对象为内容的以null结尾的字符序列(c-string),并将其作为指向字符数组的指针返回.

将自动附加终止空字符.

不,它不需要被释放.String的析构函数为您完成.

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

来源:http://www.cplusplus.com/reference/string/string/c_str/