zoukankan      html  css  js  c++  java
  • GetBuffer与ReleaseBuffer

    GetBuffer函数最典型的用法了,其实它就相当于申请一块nLen大小的内存,只不过,这块内存是被引用在CString对象的内部而已,这是非常有效的一种用法,如果不直接用GetBuffer函数来申请的话,那么你必须用new操作符(或者malloc()函数)在CString的外部申请,然后再将申请的内存拷贝到CString对象中,显然这是一个非常冗余的操作,会使你函数的效率大大下降。

      ReleaseBuffer函数是用来告诉CString对象,你的GetBuffer所引用的内存已经使用完毕,现在必须对它进行封口,否则CString将不会知道它现在所包含的字符串的长度,所以在使用完GetBuffer之后,必须立即调用ReleaseBuffer函数重置CString的内部属性,其实也就是头部信息。

    CString str;
    strcat(str.GetBuffer(0),"12");
    错误,因为12长度是2

    CString str="123";
    strcat(str.GetBuffer(5),"12");
    AfxMessageBox(str);
    如果参数小于5就会出错

    本博客是个人工作中记录,遇到问题可以互相探讨,没有遇到的问题可能没有时间去特意研究,勿扰。
    另外建了几个QQ技术群:
    2、全栈技术群:616945527,加群口令abc123
    2、硬件嵌入式开发: 75764412
    3、Go语言交流群:9924600

    闲置域名www.nsxz.com出售(等宽等高字符四字域名)。
  • 相关阅读:
    Spring Boot邮件功能
    jenkins自动部署
    spring boot定时任务解析
    类的加载classload和类对象的生成
    排序算法
    Robbin负载均衡
    ActiveMQ消息中间件
    hystrix熔断器
    css3整理--calc()
    css3整理--media
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/9762008.html
Copyright © 2011-2022 走看看