LPSTR comment libérer la mémoire après l'utilisation de
-
18-09-2019 - |
Question
Supposons que j'ai une variable LPSTR. Comment puis-je libérer la mémoire après avoir utilisé la variable. Est-il
LPSTR szFileName = GetSBCSBuffer(sFilePath); // sFilePath is a CString
delete szFileName;
ou
delete []szFileName;
Veuillez aviser
La solution
Si la mémoire a été allouée à l'aide new char[SIZE]
alors il doit être libéré en utilisant delete []
.
Autres conseils
Vous ne pouvez pas répondre à cette question sans connaître les détails de GetSBCSBuffer. Espérons que celui qui a écrit la fonction gauche avec le code et / ou de la documentation afin que vous puissiez voir où la chaîne vient. Il est peut-être que ni de vos solutions de rechange est correcte. L'auteur de GetSBCSBuffer aurait pu utiliser un allocateur de mémoire différent ou retourné un pointeur vers un emplacement interne à sFilePath. Dans le dernier cas, il serait très mauvais pour appeler toute deallocator.
Je viens de remarquer vous avez répondu à la question vous-même dans votre commentaire réponse de elder_george . La mise en œuvre utilisée nouvelle [] de sorte que vous devez supprimer [].