我是一名Java程序员,我是C ++的新手,最近我一直在编写一些C ++代码。 我对C ++对象有点困惑'一生(在Java中有垃圾收集,我不必担心这个问题)。
这是我的问题。
假设我有一个函数f()
char *f() {
string a = "Hello";
return a.c_str();
}
这段代码有效吗?令我困惑的是:a
内声明的字符串f
的生命周期是什么,当f
返回时是否会被垃圾收集?我可以依赖返回的a.c_str()
在f
之外是否正确?
答案 0 :(得分:-2)
C ++没有垃圾抓取器,就像java一样。如果你创建一个对象,那么你需要自己销毁它。函数中定义的所有变量在退出此函数时都会被销毁(对象除外,您需要自己销毁)