清除和删除多精度变量



我正在使用一些动态分配的多精度变量数组(来自mpc库),想知道是否有必要清除变量并删除数组以避免内存泄漏等?换句话说,下面代码片段中的所有内务管理都是必要的吗?

using namespace std;
#include <gmp.h>
#include <mpfr.h>
#include <mpc.h>
int main() {
    int i;
    mpc_t *mpcarray;
    mpcarray=new mpc_t[3];
    for(i=0;i<3;i++) mpc_init2(mpcarray[i], 64);
    // Manipulations
    for(i=0;i<3;i++) mpc_clear(mpcarray[i]);
    delete [] mpcarray;
    return 0;
}

是的,这是必要的。

生活的一般规则适用于此:

"你应该处理你使用的东西!"

如果不这样做,则会导致内存泄漏,如果mpc_t的析构函数包含产生副作用的代码,则会导致更严重的未定义行为。

动态内存是一个为你的程序提供显式内存管理的功能,如果你使用它(调用newnew [] ),那么你有责任确保它的正确使用(分别调用deletedelete [] 来释放它)。

注意,使用auto/local变量比使用动态指针要好得多。
如果必须的话,应该使用智能指针而不是原始指针。它们为您提供了动态内存的优点,并且减少了显式内存管理开销。

相关内容

  • 没有找到相关文章

最新更新