在库FLINT中,我们有函数fmpz_poly_clear从内存中清除fmpz_polynomial。但是我使用的是这个库的 C++ 接口,所以,我的多项式属于fmpz_polyxx或fmpz_mod_polyxx类型。
我想知道如何清除这些多项式。我已经搜索了 FLINT 的文档,但我一无所获。
例如,以下程序创建了一个具有 700 万个系数的多项式。在我的机器上,它使用大约 1GB 的 RAM。退出 for 循环后,我尝试删除多项式。
我正在读取一个整数,只是为了让程序在终止执行之前等待。
#include <iostream>
#include "flint/fmpzxx.h"
#include "flint/fmpz_mod_polyxx.h"
#include "flint/fmpz_mod_poly_factorxx.h"
using namespace flint;
int main(int argc, char *argv[])
{
// q (273-bit prime)
fmpzxx q("15177100720513508366558296147058741458143803430094840009779784451085189728165691397");
fmpz_mod_polyxx* myPoly = new fmpz_mod_polyxx(q);
for (int i = 0; i < 7000000; i++){
myPoly->set_coeff(i, q - fmpzxx(i));
}
delete myPoly; // <-- this line does not work
// fmpz_poly_clear(myPoly); // <-- this line does not work
// fmpz_mod_polyxx_clear(myPoly); // <-- this one neither
int a;
std::cin >> a; // wait
return EXIT_SUCCESS;
}
有人知道该怎么做吗?