4

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

它接缝了原始边缘检测器依赖于操作系统在执行主要功能后清理内存。不幸的是,在我修改了这个原始代码之后,主函数变成了一个“普通”的重复调用函数,因此没有执行自动清理。结果是每次调用该函数时都会发生巨大的内存泄漏。

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

谢谢您的回复。

4

2 回答 2

0

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

于 2013-08-07T12:23:02.080 回答
0

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

有一些方法可以管道子进程的标准输入、标准输出,以便您可以控制它。

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

如果你在 linux 上,你可以用谷歌搜索:fork() 或 system() 函数来创建一个子进程。

于 2013-08-07T12:23:06.023 回答