J'ai un Win32 TreeCtrl où l'utilisateur peut renommer les étiquettes d'arbres. Je traite le message TVN_ENDLABELEDIT pour ce faire.Win32 TreeCtrl allocation de mémoire TVN_ENDLABELEDIT
Dans certains cas, je dois modifier le texte saisi par l'utilisateur. Fondamentalement, l'utilisateur peut entrer un nom court pendant l'édition et je veux le remplacer par un texte plus long. Pour cela, je change le membre pszText de la structure TVITEM reçue lors de TVN_ENDLABELEDIT. Je remplace un pointeur ici, car la mémoire d'origine peut être trop petite pour faire une simple opération de type strcpy.
Toutefois, je ne sais pas comment libérer le membre pszText d'origine. Fondamentalement parce que c'est inconnu si cela a été créé avec malloc() ou nouveau ... donc je ne peux pas appeler le deallocator approprié. Évidemment Win32 n'appelera pas le deallocator pour l'ancien pszText parce que le pointeur a été remplacé. Donc, si je ne libère pas, il y aura une fuite de mémoire.
Une idée de comment Win32 allouer ces structures et quelle est la bonne façon de gérer la situation ci-dessus?