gpt4 book ai didi

c - 如何处理别人的驱动程序的内存泄漏

转载 作者:太空狗 更新时间:2023-10-29 17:24:00 24 4
gpt4 key购买 nike

我在 CentOS 5.5 计算机上运行一个 c 程序。该程序运行一个循环,一遍又一遍地执行测试,直到被外部源告知停止。

根据需要,我使用旧的 PCI 卡驱动程序与我的测试系统进行通信。自从 CentOS 4.5 升级到 5.5 后,我发现我的程序只能循环 175 次。那时程序因分配堆内存错误而停止。每次程序循环并且系统内存不足时,我都可以看到内存以 10 到 20 MB 的 block 使用。当我使用 Cntrl-C 退出程序时,内存立即被释放。

我使用了 Valgrind,这表明内存泄漏存在于旧驱动程序中。编写驱动程序的公司现在只支持 Windows,而且他们已经 5 年多没有升级驱动程序了。

在没有源代码的情况下,有什么方法可以释放驱动程序在每次循环我的程序时使用的内存?

谢谢。

最佳答案

如果您通过循环内的驱动程序声明对测试系统的访问,这应该将其置于每次迭代的范围之外。

类似下面的内容:

char readbuf[512];
for (int i = 0; i < countloops; i++)
{
int fd = open("/dev/com1", O_RDWR);
readbuf = read(fd, sizeof (readbuf));
close (fd);
}

关于c - 如何处理别人的驱动程序的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com