gpt4 book ai didi

c++ - std::string 如何在不泄漏的情况下保持内存超出范围?

转载 作者:行者123 更新时间:2023-11-28 06:10:32 32 4
gpt4 key购买 nike

<分区>

我的问题是关于以下简单代码:

#include <iostream>

using namespace std;

const char* call()
{
string str("Hey there.");
return str.c_str();
}

int main()
{
const char* blah = call();
cout << blah << endl;

system("pause");
return 0;
}

输出:“你好。”

现在,“嘿,那儿”的内存是怎么回事?当 std::string 在方法结束时被销毁时,不会被销毁或导致内存泄漏?我不是 C++ 专家,但我相信字符串是否分配了包含“Hey there”的内存。在堆栈上,当字符串超出范围(方法结束)时,它会被删除,如果字符串在堆上分配内存来存储“Hey there”。那么这将导致内存泄漏,因为它显然不会破坏内存,因为我们在字符串超出范围后访问内存。

那么,我如何能够访问 c_str() 指向的内存块而不导致内存泄漏?

非常感谢您的回复。

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com