我试图在C++程序中节省一些内存,我想知道我是否可以使用块作为变量的范围(如Perl).假设我有一个巨大的对象执行一些计算并给出结果,这样做是否有意义:
InputType input; ResultType result; { // Block of code MyHugeObject mho; result = mho.superHeavyProcessing(); } /* My other code ... */
退出块时,我可以期望对象被销毁吗?
是的你可以.
一旦变量超出范围,就会调用析构函数,它应该释放堆分配的内存.
是绝对的,除了节省内存之外,通常在调用析构函数时希望析构函数实际执行某些操作时调用析构函数的析构函数(请参阅RAII).例如,创建基于作用域的锁并以异常安全的方式轻松释放它,或者确定性地放弃对共享或宝贵资源(如文件句柄/数据库连接)的访问.
-Rick