gpt4 book ai didi

c++ - 在这种情况下如何释放内存?

转载 作者:行者123 更新时间:2023-11-27 23:08:06 25 4
gpt4 key购买 nike

我有一个 A 类和一个函数 func,如下所示

class A
{
int m_memA;
public:
A(int x):m_memA(x){}
std::string GetString();
};

A* CreateA()
{
return new A(5);
}

bool func(std::string* stringOut)
{
A* obj_A = CreateA(); //memory allocated in heap
*stringOut = obj_A->GetString();
if(stringOut->empty())
{return true;}
return false;
}

int main()
{
std::string str;
if(func(&str)) //How to free memory here?
{
//do something
}
return 0;
}

调用func时如何释放内存?

最佳答案

我完全看不出所有动态分配的原因,但是您需要删除 func 中的A:

bool func(std::string* stringOut)
{
A* obj_A = CreateA(); //memory allocated in heap
*stringOut = obj_A->GetString();
delete obj_A; // delete dynamically allocated object
return stringOut->empty();
}

编辑 由于您无法更改CreateA,您至少可以通过使用智能指针(例如std::unique_ptr)使此异常安全或 boost::scoped_ptr。例如:

bool func(std::string* stringOut)
{
std::unique_ptr<A> obj_A(CreateA());
*stringOut = obj_A->GetString();
return stringOut->empty();
}

关于c++ - 在这种情况下如何释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21890280/

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