У меня есть Win32 TreeCtrl, где пользователь может переименовать метки дерева. Я обрабатываю сообщение TVN_ENDLABELEDIT, чтобы сделать это.
В некоторых случаях мне нужно изменить текст, введенный пользователем. Обычно пользователь может ввести короткое имя во время редактирования, и я хочу заменить его более длинным текстом.
Для этого я изменяю элемент pszText структуры TVITEM, которую я получил во время TVN_ENDLABELEDIT. Здесь я делаю замену указателя, поскольку исходная память может быть слишком маленькой, чтобы выполнить простую операцию, похожую на strcpy.
Однако я не знаю, как освободить оригинальный член pszText. В основном потому, что неизвестно, было ли это создано с помощью malloc () или new ... поэтому я не могу вызвать соответствующий освобождение. Очевидно, что Win32 не будет вызывать Deloclocator для старого pszText, потому что указатель был заменен. Так что, если я не освобожу, произойдет утечка памяти.
Есть идеи, как Win32 распределяет эти структуры и как правильно обращаться с вышеуказанной ситуацией?