You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用mpz_clear后执行mpz_init触发SIGSEGV段错误的问题咨询

调用mpz_clear后执行mpz_init触发SIGSEGV段错误的问题咨询

我最近在使用GNU MP库时遇到了一个棘手的段错误问题——明明已经先调用mpz_clear清理了mpz_t类型的变量rop,紧接着调用mpz_init重新初始化它,结果程序还是触发了SIGSEGV崩溃。

先给大家看一下精简掉无关逻辑后的代码:

void mpz_choose_ui(mpz_t rop, ul a, ul b){
    mpz_clear(rop);
    mpz_init(rop);
}

用gdb调试后,捕获到的错误调用栈信息如下:

0x00007ffff7da2c95 in __GI___libc_free (mem=0xffffffffffffffff) at malloc.c:3453
3453      if (chunk_is_mmapped (p))                       /* release mmapped memory. */

从错误信息来看,__libc_free尝试去释放一个无效的地址0xffffffffffffffff,可我明明已经先执行了mpz_clear来清理变量了啊。有没有熟悉GNU MP库的朋友能帮我分析下这到底是哪里出问题了?

备注:内容来源于stack exchange,提问作者user20695956

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:18:18