2013-08-07 39 views
4

我正在用C++编写图像处理程序。为此,我将第三方程序(边缘检测器)修改为我在我的程序中使用的静态库。强制操作系统在“子程序”之后执行清理操作

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

我无法彻底检查探测器的整个代码来解决这个问题。我想问一下:一般情况下,是否有办法将整个程序的子程序(在我的情况下是检测器)与其他程序分开,并强制操作系统在子程序之后清理,就好像它是一个独立的程序?例如,有没有使用线程的解决方案?

谢谢你的回复。

+0

子进程+ ipc – PlasmaHH

回答

0

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

0

你可以在一个单独的进程中运行它,它将从你的程序中被踢入。

有许多方法可以管理子进程的标准输入,标准输出,所以你可以控制它。

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

如果你在linux上,你可以通过google:fork()或system()函数来创建一个子进程。