c++ - 如何从函数返回字符串文字

标签 c++ string literals return-type

我总是对从函数返回字符串文字或字符串感到困惑。我被告知可能存在内存泄漏,因为您不知道内存何时会被删除?

例如,在下面的代码中,如何实现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::stringstd::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/

相关文章:

c++ - 替换文件中的单词

c++ - 有没有办法从 `std::initializer_list` 创建用户定义的文字?

java - 在 Switch 语句中使用文字而不是变量? java

c++ - 使用指针缓慢迭代字符串

c++ - 从 STM32CubeIDE 启动 QEMU 模拟器时出现问题

c - 将逗号分隔的字符串转换为 double

javascript - 在普通的 JavaScript 中是否有像prototype.toArray 这样的函数?

java - 无法对我的字符串 ArrayList 进行排序

Python - 数字文字表达式

c++ - 将成员声明与 enable_if 一起使用?