c - MPIR 编码错误

标签 c memory memory-leaks

嗨,我尝试在我的代码中使用 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/

相关文章:

c++ - 为什么我可以在 C 中调用函数而不声明它,但不能在 C++ 中调用?

c - mmap 无法分配内存——绝对不是内存不足

java - 更改 Activity 时 Android 应用程序内存不足错误

python - Python 的 json 模块占用大量内存?

java - OkHttp:避免泄漏连接警告

c - 使用 getline() 时出现打印问题

具有常量(真)值的条件运算符?

c - 为什么给定的 'C' 代码片段中 x 的值为 28?

java - 获取内存(RAM)上的 map 大小

c - 确保越界内存写入触发立即故障