【发布时间】:2016-10-16 11:47:11
【问题描述】:
我正在尝试通过编写一个简单的程序将一些浮点数相加来学习如何在 C 中使用 GMP 库,但在运行时它会报错:
GNU MP: Cannot allocate memory (size=140735132293330)
Aborted (core dumped)
代码如下:
#include <gmp.h>
#include <stdio.h>
int main(){
mpf_set_default_prec(64);
mpf_t sum;
mpf_init(sum);
mpf_set_ui(sum,0);
unsigned int i = 0;
while (i < 4) {
mpf_add_ui(sum,sum,i);
i++;
}
mpf_out_str(stdout,10,sum);
printf ("\n");
mpf_clear(sum);
}
我可以只使用 GMP mpz 函数来执行此操作而不会出现问题,但是当我尝试使用浮点数时,我被卡住了。该文档并没有真正显示任何浮点函数的真实示例,所以也许我正在初始化或分配不正确的值。
【问题讨论】:
-
始终在严格的标准一致性模式下使用您的编译器并启用所有可用的警告。在解决所有警告之前,请勿在 Stack Overflow 上发帖。现有工具可以完全自动诊断 99% 的编程问题。
标签: c linux memory numbers gmp