c - C 中的段错误(核心转储)(使用 GMP 库)

标签 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);
    }

发生错误。

最佳答案

从您拥有的一小段代码来看,差异似乎在于变量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/

相关文章:

c - 如何检查数组元素中是否存储了某些内容

c - 如何从文件中提取一行的一部分?

linux - 比较两个文件并写入不匹配的行和不匹配的列

opengl - glBlitFramebuffer 导致访问冲突

php - Zend Framework2 中的段错误试图添加到 sqlite 数据库

c++ - 为什么没有发生堆栈溢出?

c - 在 C 中标记字符串

c++ - C 和 C++ 编译器是否优化与函数调用的比较?

linux - git send-email thows Errno architecture (..) does not match executable architecture (...) at/usr/lib64/perl5/Errno.pm line 11

java - java 中 HTTPUrlConnection 的 inputStream 的默认字符编码