이 코드를 실행하면 "분할 오류 (코어 덤프)"오류가 발생합니다. 그러나 mpz_get_str을 사용하지 않으면 okey입니다.GMP GNU 코드에 오류가 있습니까?
#include<stdio.h>
#include<gmp.h>
int main()
{
char *A;
mpz_t P,Q;
mpz_init(P);
mpz_init(Q);
mpz_set_str(P,"1201858877187548528922917",10);
mpz_set_str(Q,"1248833599132922783100713",10);
mpz_t PHI,E,K,d;
mpz_init(PHI);
mpz_init(E);
mpz_init(K);
mpz_init(d);
mpz_sub_ui(PHI,P,1);
mpz_sub_ui(K,Q,1);
mpz_mul(PHI,PHI,K);
mpz_set_str(E,"37",10);
mpz_gcd(d,E,PHI);
gmp_printf("d=%Zd\n",d);
mpz_invert(d,E,PHI);
gmp_printf("d=%Zd\n",d);
A=mpz_get_str(A,2,d);
mpz_mul(K,d,E);
mpz_sub_ui(K,K,1);
mpz_divexact(K,K,PHI);
}
Valgrind로 프로그램을 실행하면 오류의 위치를 알려줍니다. Valgrind는 예상치 못한 세그먼테이션 오류를 처리 할 때 사용할 수있는 가장 좋은 도구입니다. –