Jak*_*lat 6 c++ memory string cstring
我正在编写一个类似于std :: string的字符串类作为家庭作业,但我无法弄清楚如何返回一个不会导致内存泄漏的c字符串,并保证保持不变直到它不存在使用时间更长.我目前有:
const char* string::c_str()
{
char c[_size+1];
strncpy(c,_data,_size);
c[_size]='\0';
return c;
}
Run Code Online (Sandbox Code Playgroud)
但是在调用之后不久就会覆盖内容.如果我进行动态分配,我会有内存泄漏,或者任何时候只能从给定的字符串中存在一个c字符串.我怎么能避免这个?
但指向的字符串c_str只有在std::string下次修改(或销毁)之前才能很好地定义.
实现此目的的一种方法可能是简单地返回指向内部缓冲区的指针(假设它以空值终止).请记住,符合标准c_str必须在O(1)时间内运行; 所以不允许复制.