From CString to char*, ReleaseBuffer()
must be used after GetBuffer()
. But why? What will happen if I don't use ReleaseBuffer()
after GetBuffer()
?
Can somebody show me an example? Thanks.
I'm not sure that this will cause a memory leak, but you must call ReleaseBuffer
to ensure that the private members of CString
are updated. For example, ReleaseBuffer
will update the length field of the CString
by looking for the terminating null
character.
What will happen if I don't use
ReleaseBuffer()
afterGetBuffer()
?
I haven't used MFC (and hopefully won't ever have to touch it with a ten-foot pole) but, as a rule of thumb, whenever you have an API that has both GetXXX()
and ReleaseXXX()
(especially when the result of GetXXX()
conveniently is of the type that ReleaseXXX()
takes) -- then when you forget to call ReleaseXXX()
for every one of your GetXXX()
calls, you will leak an XXX
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With