2011-11-18 115 views
0

我在本地C++ win32應用程序中收到了一些不尋常的內存泄漏。它有一個對話框,其中包含一些文本和一些URL鏈接,這些鏈接是用SysLink控件製作的。問題是,當我點擊syslink(僅第一次,並不重要哪個鏈接),我得到了約400-500kb(整個應用程序使用1.5MB)的內存使用增加。打開的URL代碼:C++ win32 SysLink內存泄漏

ShellExecute(NULL, L"open", item.szUrl, NULL, NULL, SW_SHOW); 

有人能解釋爲什麼ShellExecute的分配這麼多的內存,我怎麼可以在呼叫後釋放它。

+2

我對你使用的庫不熟悉,但是如果它只發生一次並且只發生第一次調用,那麼它可能只是圖書館正在加載它所需的一些資源。 – Dennis

+0

我同意@Dennis,我的猜測是它的功能是將DLL添加到你的記憶中。 –

+0

操作系統在某些時候釋放內存嗎? – blejzz

回答

2

我對你使用的庫不熟悉,但是如果它只發生一次並且只發生第一次調用,那麼它很可能就是圖書館正在加載它所需要的一些資源。

通常情況下,內存不會被釋放,直到進程結束。但是你可以自己加載庫,然後卸載它,如果你擔心內存使用...再次不熟悉你的庫,但也可能提供一個清理功能,以最大限度地減少內存使用。