Selon le manuel de GMP, "Les fonctions pour l'arithmétique entière supposent que tous les objets entiers sont initialisés, ce que vous faites en appelant la fonction mpz_init."Initialisation des variables dans GMP
Par exemple,
int main(){
mpz_t n1, n2, result;
mpz_init_set_str(n1, "465860", 10);
mpz_init_set_str(n2, "167", 10);
mpz_init(result);
mpz_mod(result, n1, n2);
mpz_out_str(stdout, 10, result);
return 0;
}
si vous supprimez mpz_init(result);
du code ci-dessus, le compilateur génère une erreur de défaut de segmentation. Donc, ma question, quelle est exactement la différence entre ces deux types de définition: mpz_t result
et mpz_init(result)
. Pourquoi mpz_init
est-il également requis?
N'oubliez pas mpz_clear! Ou utilisez l'interface C++, qui fait toute la magie pour vous. –