MPIR编码错误

时间:2013-03-22 16:34:06

标签: c memory memory-leaks

您好我已经尝试使用mpir(一个库)代码。我已经改变了我的代码并将所有内容转换为与mpir一起工作。我的代码由循环和方程中的一系列循环组成,这些循环相互依赖,因此发现错误非常困难。我在调试后运行代码,它在某个循环的前500次迭代中工作正常,然后我得到以下消息:

GNU MP:无法分配内存(size = 24) 按任意键继续 。 。

我不知道这个问题的原因。它与记忆有关吗?如果它在初始迭代中工作正常,那么为什么现在如果它不是内存就会出现问题?

我再次创建了代码,这次又进一步运行了。在给出消息之前,它进行了前2000次迭代:

GNU MP:无法分配内存(size = 16) 按任意键继续 。 。

任何人都知道问题可能是什么?

1 个答案:

答案 0 :(得分:0)

好像你已经知道了。这很可能是内存泄漏。

请参阅MPIR手册的第3.7节:

  

mpz_t和mpq_t变量永远不会减少他们分配的空间。一般   这是最好的政策,因为它避免了频繁的重新分配。   需要在某些特定情况下将内存返回到堆的应用程序   point可以使用mpz_realloc2,或者不再需要清除变量。

Valgrind,一个帮助调试内存泄漏的工具,也可能会有所帮助。祝你好运。