我曾经几次只使用过GNU MP Bignum Library,我有兴趣看到我以前分配/启动数组的方式现在已经过时了.从整数特殊功能:
5.16特殊功能
本节中的功能用于各种特殊目的.大多数应用程序不需要它们. - Function:void mpz_array_init(mpz_t integer_array,mp_size_t array_size,mp_size_t fixed_num_bits)
Run Code Online (Sandbox Code Playgroud)This is an obsolete function. Do not use it.
这是我分配和初始化数组的方式mpz_t.
int array_size = 100;
mpz_t *num_arr;
num_arr = malloc(arr_size * sizeof(mpz_t));
mpz_array_init(*num_arr, array_size, 1024);
Run Code Online (Sandbox Code Playgroud)
这仍然可以没有和错误或警告,顺便说一句,但现在这个功能被列为过时,在C中使用GMP分配数组的正确方法是什么?
mpz_init2如果要预先分配内存,只需循环遍历数组元素并逐个初始化它们:
for (i = 0; i < array_size; i++) {
mpz_init2(num_arr[i], 1024);
}
Run Code Online (Sandbox Code Playgroud)
问题mpz_array_init是它永远不会释放分配的内存.如果您单独初始化元素,则可以在以后释放它们:
for (i = 0; i < array_size; i++) {
mpz_clear(num_arr[i]);
}
Run Code Online (Sandbox Code Playgroud)