为什么使用GMP时会出现分段错误?

问题描述 投票:1回答:1

我正在使用GMP。我的程序可以成功构建,但是运行失败。以下是错误的东西:

a=1231231231231231
res^n != a
Segment fault

我程序中的所有代码是:

#include <gmp.h>
#include <stdio.h>
int main()
{
    mpz_t a,res;
    unsigned long int n = 123;

    char str1[] = "1231231231231231";
    mpz_init_set_str(a, str1, 10);
    gmp_printf("a=%Zd\n",a);


    mpz_init(res);

    if(mpz_root(res, a, n)){
        printf("res^n == a\n");
    }
    else{
        printf("res^n != a\n");
    }

    mpz_clears(a,res);
    return 0;
}

c gmp
1个回答
3
投票

您必须像这样调用mpz_clears():

mpz_clears(a,res, NULL);

这是文档所说的:

Function: void mpz_clears (mpz_t x, ...)

    Free the space occupied by a NULL-terminated list of mpz_t variables. 
© www.soinside.com 2019 - 2024. All rights reserved.