2013-08-07 70 views
4

我正在用C++編寫圖像處理程序。爲此,我將第三方程序(邊緣檢測器)修改爲我在我的程序中使用的靜態庫。強制操作系統在「子程序」之後執行清理操作

在主函數執行完成後,它依靠OS依靠原始邊緣檢測器來清理內存。不幸的是,在我修改了這個原始代碼之後,主函數變成了「常用」重複調用函數,因此不執行自動清理。每次調用函數時都會導致巨大的內存泄漏。

我無法徹底檢查探測器的整個代碼來解決這個問題。我想問一下:一般情況下,是否有辦法將整個程序的子程序(在我的情況下是檢測器)與其他程序分開,並強制操作系統在子程序之後清理,就好像它是一個獨立的程序?例如,有沒有使用線程的解決方案?

謝謝你的回覆。

+0

子進程+ ipc – PlasmaHH

回答

0

如果您使用* nix平臺,也許您可​​以通過fork庫調用。

0

你可以在一個單獨的進程中運行它,它將從你的程序中被踢入。

有許多方法可以管理子進程的標準輸入,標準輸出,所以你可以控制它。

你也可以嘗試使用valgrind來檢測泄漏並修復它們。

如果你在linux上,你可以通過google:fork()或system()函數來創建一個子進程。