Что, если я не называю ReleaseBuffer после GetBuffer?

От CString до символа*, ReleaseBuffer() должен использоваться после GetBuffer(). Но почему? Что произойдет, если я не буду использовать ReleaseBuffer() после GetBuffer()?

Кто-то может показать мне пример?Спасибо.

14
задан Andrew Truckle 16 April 2018 в 15:50
поделиться

2 ответа

Я не уверен, что это вызовет утечку памяти, но вы должны вызвать ReleaseBuffer, чтобы убедиться, что приватные члены CString обновлены. Например, ReleaseBuffer обновит поле длины CString, ища завершающий символ null.

11
ответ дан 1 December 2019 в 14:21
поделиться

Что произойдет, если я не буду использовать ReleaseBuffer () после GetBuffer () ?

Я не использовал MFC (и, надеюсь, мне никогда не придется прикасаться к нему десятифутовой палкой), но, как правило, всякий раз, когда у вас есть API, в котором есть и GetXXX () , и ReleaseXXX () (особенно когда результат GetXXX () для удобства имеет тот тип, который принимает ReleaseXXX () ) - затем, когда вы забываете вызвать ReleaseXXX () для каждого из ваших вызовов GetXXX () вы будете пропускать XXX .

3
ответ дан 1 December 2019 в 14:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: