C中的分段错误(核心转储)(使用GMP lib)

时间:2016-12-03 18:25:18

标签: c linux segmentation-fault gmp

我声明了mpz变量并在void函数中初始化它们。

它不起作用。

例如:

mpz_t a;
init();
   ...
void init(){
   mpz_init(a);
   ....
 }

没有错误。

 init();
     ...
    void init(){
      mpz_t a;
      mpz_init(a);
    }

发生错误。

1 个答案:

答案 0 :(得分:0)

从您的一小部分代码中,差异似乎是变量a的范围。在仅具有局部范围的变量(在mpz_init(a)函数内)调用init()有什么意义? init()返回后,a消失。如果您以后需要其他任何内容,变量a,以及可能是mpz_init()的一些副作用,都不会存在。如果您希望mpz_init()的副作用持续超过init()的结尾,则必须对某些结构生效,该结构也会持续超过init()的结尾。在您的第一个示例中,a声明为全局范围,因此它会在整个程序中保留。