Von dem kleinen Code, den Sie haben, scheint der Unterschied der Umfang der Variablen a
zu sein. Was ist der Punkt, mpz_init(a)
auf eine Variable mit nur lokalen Bereich (innerhalb Ihrer init()
Funktion) aufzurufen? Nach init()
kehrt zurück, a
verschwindet. Wenn Sie es später für etwas anderes benötigen, wird die Variable a
und vermutlich einige der Nebenwirkungen von mpz_init()
nicht existieren. Wenn Sie wollen, dass die Nebenwirkungen von mpz_init()
über das Ende von init()
hinaus bestehen bleiben, muss es auf einige Strukturen wirken, die auch nach dem Ende von init()
bestehen bleiben. In Ihrem ersten Beispiel wird a
mit globalem Gültigkeitsbereich deklariert, so dass es für die Gesamtheit Ihres Programms fortbesteht.
Können Sie bitte versuchen, ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen und uns zu zeigen? Und hast du versucht, in einem Debugger zu laufen, um den Absturz in Aktion zu erfassen und zu sehen, wo es in deinem Code passiert? –
Jedes Mal, wenn ein Fehler auftritt, ist es wichtig genau zu wissen, was die Fehlermeldung _says_ bedeutet. – Chris