MFC工程中经常用到CString对象,方便字符串的处理;根据网上朋友的帖子和测试,现总结一下以前的疑虑;
1、GetBuffer()调用后,不调用ReleaseBuffer()是否会导致内存泄露?
答:是不会导致内存泄露,GetBuffer()分配的内存,在CString对象析构时,会保证释放的
2、GetBuffer()的作用到底是什么?
答:返回CString对象分配的内存地址,方便程序员直接操作内存数据
3、ReleaseBuffer()作用是什么?
答:根据内存中的字符来确定字符串的结束位置和长度。(如果没有'\0'终止字符,计算长度时由于越界会导致异常)
4、GetBuffer()调用后,为什么要调用ReleaseBuffer()
答:看(3)的内容。由于内存中的字符串内容不确定,因此,在她们之间调用CString的成员函数是无效的(返回的仍然是GetBuffer()调用之前的信息),
ReleaseBuffer()调用后,CString的成员函数才有意义。