清除和删除多精度变量

时间:2013-01-11 15:30:42

标签: c++ memory-management memory-leaks dynamic-memory-allocation mpc

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

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;
}

1 个答案:

答案 0 :(得分:2)

是的,这是必要的。

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

“你应该处理你使用的东西!”

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

动态内存是一项功能,可为您的程序提供明确的内存管理,如果您使用它(调用newnew [] ),则您有责任确保正确使用(分别调用deletedelete [] 来解除分配)。

请注意,您最好使用自动/局部变量而不是动态指针 如果必须,您应该使用 smart pointers 而不是原始指针。它们为您提供动态内存减去显式内存管理开销的优势。