gpt4 book ai didi

返回后的 C++ 内存释放

转载 作者:太空狗 更新时间:2023-10-29 23:46:42 25 4
gpt4 key购买 nike

我有一个关于 C++ 中的内存分配和释放的问题。这是情况:我有一个分配内存然后返回该对象的方法 foo:

Object foo () {
Object *a = new Object();
// Do something with this object...
return *a;
}

和另一个使用这个返回对象的方法:

void bar () {
Object a = foo();
// Do something..
}

我的问题是,我应该在什么时候解除分配的内存?当我从方法 foo 返回时,方法 bar 是否在其堆栈上获取该对象的拷贝,或者它是否可以访问内存中某处的那个对象?

谢谢!巴特

最佳答案

您不能取消分配该对象。它丢失了。这是内存泄漏。你永远不应该首先(动态地)分配它。您的代码应如下所示:

Object foo () {
Object a;
// Do something with this object...
return a;
}

When i return from the method foo, does the method bar get a copy of that object on its stack, or does it get access to that one object somewhere in memory?

它是仍然存在的不可访问对象的拷贝。

关于返回后的 C++ 内存释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9550183/

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