我声明 mpz 变量并在 void 函数中初始化它们。
它不起作用。
例如:
mpz_t a;
init();
...
void init(){
mpz_init(a);
....
}
没有错误。
init();
...
void init(){
mpz_t a;
mpz_init(a);
}
发生错误。
最佳答案
从您拥有的一小段代码来看,差异似乎在于变量a
的范围。对仅具有本地作用域的变量(在 init()
函数内)调用 mpz_init(a)
有何意义? init()
返回后,a
消失。如果您稍后需要它来执行其他操作,则变量 a
以及可能来自 mpz_init()
的一些副作用将不存在。如果您希望 mpz_init()
的副作用在 init()
结束之后持续存在,则它必须对某些在 init() 结束之后也持续存在的结构生效>init()
。在您的第一个示例中,a
是在全局范围内声明的,因此它在整个程序中持续存在。
关于c - C 中的段错误(核心转储)(使用 GMP 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40951075/