在“子程序”之后强制操作系统执行清理

时间:2013-08-07 12:17:42

标签: c++ memory-leaks

我正在用C ++编写图像处理程序。为此,我将第三方程序(边缘检测器)修改为我在 my 程序中使用的静态库。

在执行主功能后,它会依靠操作系统上的原始边缘检测器来清理内存。不幸的是,在我修改了这个原始代码之后,主要功能变成了一个“常见”的重复调用函数,因此不执行自动清理。每次调用函数时都会导致巨大的内存泄漏。

我无法详尽地检查探测器的整个代码来解决这个问题。因此,我想问:一般来说,有没有办法将整个程序的“子程序”(在我的情况下是检测器)与其余程序分开,并强制操作系统在子程序之后进行清理,就像它是一个独立的计划?例如,是否可以使用线程的解决方案?

感谢您的回复。

2 个答案:

答案 0 :(得分:0)

如果您使用的是* nix平台,也许您可​​以fork库调用。

答案 1 :(得分:0)

您可以在一个单独的流程中运行它,该流程将从您的程序中启动。

有一些方法可以管理子进程'stdin,stdout,所以你可以控制它。

您还可以尝试使用valgrind来检测泄漏并修复它们。

如果您使用的是Linux,则可以使用google for:fork()或system()函数来创建子进程。