<分区>
这段代码可以吗?我知道函数返回后引用计数器会降为零,因此应该释放内存。但它可以工作并在函数外成功打印取消引用。
有人可以解释一下我正在尝试做的事情是否错误,为什么? 谢谢
#include <iostream>
#include <memory>
#include <string>
std::string& get_string(bool en)
{
return *std::make_shared<std::string>("hello world");
}
int main () {
auto& my_str = get_string(true);
std::cout << "str=" << my_str <<std::endl;
return 0;
}
输出:
> ./main
str=hello world