我正在爲Windows Mobile應用程序編寫CESetup.dll。它必須是非託管的,我沒有什麼經驗。所以我不確定我是否應該釋放我分配的內存以及我是如何做到的。釋放堆上的內存。我應該如何?
下面是我寫的函數:
Uninstall_Init(
HWND hwndParent,
LPCTSTR pszInstallDir
)
{
LPTSTR folderPath = new TCHAR[256];
_stprintf(folderPath, _T("%s\\cache"), pszInstallDir);
EmptyDirectory(folderPath);
RemoveDirectory(folderPath);
_stprintf(folderPath, _T("%s\\mobileadmin.dat"), pszInstallDir);
DeleteFile(folderPath);
// To continue uninstallation, return codeUNINSTALL_INIT_CONTINUE
// If you want to cancel installation,
// return codeUNINSTALL_INIT_CANCEL
return codeUNINSTALL_INIT_CONTINUE;
}
據我瞭解,FOLDERPATH是在堆上分配。 EmptyDirectory()是我自己的函數,用於刪除目錄中的所有內容。 RemoveDirectory()和DeleteFile()是系統調用。
我的問題是我應該在函數退出之前取消分配folderPath
嗎?如果我應該,我該怎麼做?
你是絕對正確的。但我嘗試過,它不會爲我編譯。 – ageektrapped 2008-10-27 15:19:14
我得到錯誤,如「DeleteFileW:不能將參數1從'LPTSTR [256]'轉換爲'LPCWSTR'」 – ageektrapped 2008-10-27 15:20:51
啊哈 - 你聲明一個LPTSTR數組,而不是TCHAR。 – 2008-10-27 15:28:32