嗨,我尝试在我的代码中使用 mpir(一个库)。我已经更改了代码并将所有内容转换为与 mpir 一起使用。我的代码由一系列相互依赖的循环和方程组成,因此很难发现错误。我在调试后运行了代码,它在某个循环的前 500 次迭代中运行良好,然后我收到以下消息:
GNU MP:无法分配内存(大小=24) 按任意键继续 。 。 .
我不知道这个问题的原因。和内存力有关系吗?如果它在初始迭代中运行良好,那么如果不是内存,为什么现在会出现问题?
我再次创建了代码,这次它运行得更远。在给出消息之前,它进行了前 2000 次迭代:
GNU MP:无法分配内存(大小=16) 按任意键继续 。 。 .
有人知道问题出在哪里吗?
最佳答案
看来你已经知道了。这很可能是内存泄漏。
请参阅手册第 3.7 节 MPIR :
mpz_t and mpq_t variables never reduce their allocated space. Normally this is the best policy, since it avoids frequent reallocation. Applications that need to return memory to the heap at some particular point can use mpz_realloc2 , or clear variables no longer needed.
Valgrind ,一个帮助调试内存泄漏的工具,也可能有帮助。祝你好运。
关于c - MPIR 编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15575434/