一个CString到Char*转换函数引起内存泄漏的有关问题

【求助】一个CString到Char*转换函数引起内存泄漏的问题
有如下一个CString到Char *的转换函数(Unicode下),问题是在项目软件开发(VS2010/MFC)中使用该函数后,debug关闭项目软件时,会提示内存泄漏(用Visual Leak Detector检测的)。我知道这个函数酱紫会有内存泄漏,我也想delete掉pAnsiString这货,但是话说return后就不执行delete了,请大侠们帮忙看看该咋整?或者能给出更好的实现在Unicode下CString到Char *的转换函数,万分感谢!一个CString到Char*转换函数引起内存泄漏的有关问题


char * CString2Char(const CString &s)
{
int nSize = 2*s.GetLength(); 
char *pAnsiString = new char[nSize+1]; 
wcstombs(pAnsiString, s, nSize+1); 
return pAnsiString; 
delete [] pAnsiString;//这个函数酱紫会有内存泄漏。。。我想delete掉pAnsiString这货,但是话说return后就不执行delete了。。。

}
内存泄漏 Unicode MFC VC++

------解决方案--------------------
用WideCharToMultiByte吧!
------解决方案--------------------
看以下CString的GetBuffer,ReleaseBuffer
------解决方案--------------------
将CString类型转换为char*可以入2楼所说。列子如下:
CString s = "ssss";
char *p = NULL;
p = s.GetBuffer(s.GetLength()+1);//用GetBuffer转换字符串,用GetLength获得长度
p = '\0';
。。。。。
s.ReleaseBuffer(s.GetLength()+1);//Getbuffer是在堆中获得了Getlength长度的空间,用ReleaseBuffer回收

如果楼主非要用CString2Char()函数,何不将pAnsiString定义为类的变量,在CString2Char()中分配空间,在析构函数中回收资源这样就行了。

//我一般就是用的第一种方法,不过第一种方法也要记得回收资源