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

Était-ce utile?

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 [].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top