C++:可以提前销毁对象,使其存储内存被后续对象重用吗?
在一段 C++ 代码中,在前半部分,使用了对象 a、b;在第二半部分,对象 c、d 被创建和使用。
由于对象 a、b 占用大量内存,我想在第一半部分完成时手动销毁对象 a、b。
我知道我可以使用 new,delete 来实现它。
但是如果我不使用 new 并且仍然想更早地销毁对象(也就是说,在其范围结束之前),我可以手动调用它的析构函数来销毁它吗?这样那部分内存就可以被对象 c 和 d 重用。(我不需要释放内存,因为重用很好。
这是一个伪代码:
monsterClass a, b;
dragonClass c, d;
int i,j,k,l;
a = monsterClass(1000, 2000);
b = monsterClass(2000, 3000);
i = processMethod1(a, b);
j = ...;
k = ...;
l = ...;
// here, I want to destroy a, b, since they are not used any more, while occupy memory.
// The above half part and the below half part use many common variables.
// So it seems scope {} method makes it inconvenient,
// since I don't want to create a function with too many parameters.
// I don't want to use new or delete here. I hope it looks simple and not prone to error
// So can I use: ~a, ~b here?
c = dragonClass(400, 3000);
d = dragonClass(500, 4000);
processMethod2(c, d, i);
j = ...;
k = ...;
l = ...;
[更新 1] 所以大多数人建议使用范围,这是一个好方法。我还是很好奇,我可以在那里使用 ~a 和 ~b 吗?我认为这似乎也是一种可行且方便的方式。
[更新 2] 我想出了另一种情况。在这种情况下,不同变量的作用域是交织在一起的!就像这样:a 的范围与 b 的范围有重叠,但它们不包括关系。它是部分重叠的关系。在这种情况下,这是否意味着无法使用范围?最后的手段是使用new和delete,对吧?