【发布时间】:2011-05-10 09:52:43
【问题描述】:
我在 CentOS 5.5 计算机上运行 c 程序。该程序运行一个循环,一遍又一遍地执行测试,直到被外部源告知停止。
我必须使用旧驱动程序来与我的测试系统通信的 PCI 卡。自从从 CentOS 4.5 升级到 5.5 后,我注意到我的程序只能循环 175 次。那时程序因分配堆内存的错误而停止。每次程序循环并且系统内存不足时,我可以看到内存在 10 到 20 MB 的块中使用。当我使用 Cntrl-C 退出程序时,内存立即被释放。
我使用了 Valgrind,这表明内存泄漏在旧驱动程序中。编写驱动程序的公司现在只支持 Windows,并且他们已经超过 5 年没有升级驱动程序了。
如果没有源代码,有什么方法可以在每次循环执行程序时释放驱动程序使用的内存?
谢谢。
【问题讨论】:
-
驱动是运行在用户空间还是内核空间?
标签: c memory-leaks driver centos5