关于CString的GetBuffer 和 ReleaseBuffe .

MFC工程中经常用到CString对象,方便字符串的处理;根据网上朋友的帖子和测试,现总结一下以前的疑虑;

1、GetBuffer()调用后,不调用ReleaseBuffer()是否会导致内存泄露?

答:是不会导致内存泄露,GetBuffer()分配的内存,在CString对象析构时,会保证释放的

2、GetBuffer()的作用到底是什么?

答:返回CString对象分配的内存地址,方便程序员直接操作内存数据

3、ReleaseBuffer()作用是什么?

答:根据内存中的字符来确定字符串的结束位置和长度。(如果没有'\0'终止字符,计算长度时由于越界会导致异常)

4、GetBuffer()调用后,为什么要调用ReleaseBuffer()

答:看(3)的内容。由于内存中的字符串内容不确定,因此,在她们之间调用CString的成员函数是无效的(返回的仍然是GetBuffer()调用之前的信息),

      ReleaseBuffer()调用后,CString的成员函数才有意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值