我不是C++程序员,我非常尊重它的复杂性,因此通常我会远离它。尽管如此,我还是找到了一个我想修改的库。
该库包含一个示例片段,其中在本地范围内分配了一个实例:
Foo foo(arg1, arg2, ...);
我想修改此示例以重新初始化对象并对其执行更多操作,但是我无法通过getters / setters或公共(public)变量来执行此操作。不创建更多实例就可以吗?
万一没有创建新实例就无法做到这一点,我该如何释放不再需要的对象的内存?
例如,如果它是一个动态对象,我想它应该是这样的:
Foo* pfoo;
pfoo = new Foo(arg1, arg2, ...);
pfoo->doSomething();
delete pfoo;
pfoo = new Foo(arg3, arg4, ...);
pfoo->doSomething();
delete pfoo;
堆栈中分配的对象的等效值是多少?
最佳答案
释放自动变量的唯一方法是让它们超出范围:
void bar() {
Foo f1(arg1, arg2);
f1.doSomething();
{
Foo f2(arg3, arg4);
f2.doSomething();
// other stuff ...
// f2 dies here.
}
{
Foo f3(arg5, arg6); // allocated on stack, possibly overlapping f2's old spot
f3.doSomething();
// ...
// f3 dies here.
}
// f1 dies here.
}
关于c++ - 如何重用堆栈中创建的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23683907/