gpt4 book ai didi

c - GMP 代码中的内存分配错误

转载 作者:行者123 更新时间:2023-11-30 14:54:33 26 4
gpt4 key购买 nike

这是为数学极客准备的;)

我正在编写一个小型 C 程序,使用 GNU MP 库来计算前 10 个斐波那契数。这是我的尝试:

#include "gmp.h"
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>


int main(int argc, char * argv[]){

mpz_t a, b, c;

mpz_init_set_ui(a,1); /* a = 1 */
mpz_init_set_ui(b,1); /* b = 1 */

for (int i=1; i <= 2 ; ++i){
mpz_add(c,a,b); /* c = a + b */
mpz_mul_ui(a,b,1);
mpz_mul_ui(b,c,1);
}

mpz_out_str(stdout,10,c);
printf ("\n");
mpz_clear(a);
mpz_clear(b);
mpz_clear(c);

return 1;
}

我已使用 gcc(版本 7.2.1)成功编译了代码,并且使用以下命令没有错误:gcc -o fibonacci fibonacci.c -g -lgmp -lm。然而,事实证明这段代码不太成功,因为当我运行它时,我收到以下错误:

*** Error in `./fibonacci': realloc(): invalid pointer: 0x00000000004008bd ***

我做错了什么?谢谢

最佳答案

您尚未初始化变量 c。使用这个:

mpz_init(c);

即使你不想设置初始值,你仍然必须初始化变量来为其设置值,否则程序会抛出错误。

此外,在调试 GNU MP(以及其他任何事情)时,您可以做的一件有用的事情就是逐行检查并注释掉行以找到问题。我今天早上遇到了这个问题,这就是我解决它的方法。

关于c - GMP 代码中的内存分配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46632088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com