我总是对从函数返回字符串文字或字符串感到困惑。我被告知可能存在内存泄漏,因为您不知道内存何时会被删除?
例如,在下面的代码中,如何实现foo()
才能使代码的输出为“Hello World”?
void foo ( ) // you can add parameters here.
{
}
int main ()
{
char *c;
foo ( );
printf ("%s",c);
return 0;
}
还有,如果foo()
的返回类型不是void,但是可以返回char*
,应该是什么?
最佳答案
我假设我们不能修改 main.为了使您的程序无泄漏地运行,您需要一些具有静态存储的东西:
void foo(char*& pC) // reference
{
static char theString[] = "thingadongdong";
pC = theString;
}
但实际上,这不是非常传统的 C++ 代码。您将使用 std::string
和 std::cout
,因此您不必担心内存问题:
std::string foo(void)
{
return "better thingadongdong";
}
int main(void)
{
// memory management is done
std::cout << foo() << std::endl;
}
如果您想知道是否需要手动释放某些东西,那就是做错了。
关于c++ - 如何从函数返回字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481535/