use*_*294 2 c++ memory-leaks memory-management
我有关于c ++内存分配和释放的问题.情况就是这样:我有一个方法foo,它分配内存然后返回该对象:
Object foo () {
Object *a = new Object();
// Do something with this object...
return *a;
}
Run Code Online (Sandbox Code Playgroud)
和另一个使用此返回对象的方法:
void bar () {
Object a = foo();
// Do something..
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,我应该在哪个时候释放我分配的内存?当我从方法foo返回时,方法栏是否在其堆栈上获得该对象的副本,或者它是否可以访问内存中某个对象?
谢谢!巴特
您无法释放该对象.它丢了.这是一个内存泄漏.你永远不应该(动态地)分配它.您的代码应该如下所示:
Object foo () {
Object a;
// Do something with this object...
return a;
}
Run Code Online (Sandbox Code Playgroud)
当我从方法foo返回时,方法栏是否在其堆栈上获得该对象的副本,或者它是否可以访问内存中某个对象?
它是仍然存在的无法访问的对象的副本.