J'écris un CESetup.dll pour une application Windows Mobile. Il doit être non géré, avec lequel j'ai peu d'expérience. Donc, je ne suis pas sûr de savoir si je devrais libérer la mémoire que j'alloue et comment je le fais.Libérer de la mémoire sur le tas. Devrais-je et comment?
est ici la fonction que j'ai écrit:
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;
}
Si je comprends bien, folderPath est alloué sur le tas. EmptyDirectory() est ma propre fonction qui supprime tout le contenu du répertoire. RemoveDirectory() et DeleteFile() sont des appels système.
Ma question est de savoir si je dois libérer folderPath
avant que la fonction ne se termine? Si je devais, comment puis-je le faire?
Argh! Vous avez raison, bien sûr. Ma faute. – Treb