当前位置:C++技术网 > 资讯 > CString.AllocSysString()函数的释放问题

CString.AllocSysString()函数的释放问题

更新时间:2016-01-24 22:09:44浏览次数:1+次

MSDN里的原话,对于AllocSysString函数的解释:
Commonly, if this string is passed to a COM function as an [in] parameter, then this requires the caller to free the string. This can be done by using SysFreeString, as described in the Windows SDK. For more information, see Allocating and Releasing Memory for a BSTR. 
如果是COM要传出字符串,基本上就只能使用AllocSysString函数了;如果是给COM传入一个字符串就没多大必要用这个函数了,这还会带来到底有谁释放的问题
CString.AllocSysString()是先另外开辟一个空间,然后把CString的内容copy过去。得到这个新开辟的空间的地址。
因此当我们用完这个空间之后,最好还是释放掉,如果你是个合格的程序员的话,对于内存的浪费你是不会允许的。这就像是DC一样,不管是BeginPaint还是GetDC()最后我们都会释放掉资源,这是个好习惯,有时候项目就是因为资源没有释放而出错