如何从返回类型为const char*
的函数返回本地char数组?
注意: 我想要一种不使用std :: string的方法
const char * getXXX()
{
char buf[32];
sprintf(buf,"XXX%d",i); // some manipulation
return buf; // How to return???
}
答案 0 :(得分:2)
const char * getXXX()
{
static char buf[32];
sprintf(buf,"XXX%d",i);
return buf;
}
这将有效
答案 1 :(得分:1)
正如您所注意到的,您不应该返回buf(这是一个局部变量,它的内存将在函数返回后释放)。解决方案是分配一些内存并将其返回。
char * returnBuf = new char[32];
memcpy(returnBuf, buf, 32 * sizeof(char));
return returnBuf;
请记住,调用者将负责释放getXXX返回的内存:
char * result = GetXXX();
// Process
delete[] result;