От CString до символа*, ReleaseBuffer()
должен использоваться после GetBuffer()
. Но почему? Что произойдет, если я не буду использовать ReleaseBuffer()
после GetBuffer()
?
Кто-то может показать мне пример?Спасибо.
Я не уверен, что это вызовет утечку памяти, но вы должны вызвать ReleaseBuffer
, чтобы убедиться, что приватные члены CString
обновлены. Например, ReleaseBuffer
обновит поле длины CString
, ища завершающий символ null
.
Что произойдет, если я не буду использовать
ReleaseBuffer ()
послеGetBuffer ()
?
Я не использовал MFC (и, надеюсь, мне никогда не придется прикасаться к нему десятифутовой палкой), но, как правило, всякий раз, когда у вас есть API, в котором есть и GetXXX ()
, и ReleaseXXX ()
(особенно когда результат GetXXX ()
для удобства имеет тот тип, который принимает ReleaseXXX ()
) - затем, когда вы забываете вызвать ReleaseXXX ()
для каждого из ваших вызовов GetXXX ()
вы будете пропускать XXX
.