内存泄露问题,函数返回wchar_t *
请问,从图来看就是这个函数的问题吧?
如果pwText为空,就delete释放了,
但是不空呢,返回了,就没有释放,
那么因为成功返回没有释放导致的内存泄露吗??如果是该怎么办?
内存泄露 c [解决办法]
你这不叫内存泄露,是越界吧
dwNum+1试下
你的代码逻辑也有问题
if(!pwText)
{
delete []pwText;
}
为空删除,继续执行会崩溃的
[解决办法]
为NULL了,还释放什么呢?
你在调用接口的时候外层,不需要使用这片空间了再手动释放吧!
[解决办法]
你这是运行时崩溃后的堆栈信息吧?
这类函数一般有个做法是将目的串当做参数传进来,再在返回值中使用,利于函数串行结构,c的很多字符串处理函数就是这样搞的
例如:
char* func(char* arg1, char* arg2)
{
dowork...
return arg2;
}
[解决办法]
wchar_t* CStringToTransform::CharToCString(char* temp) //替换
{
DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, temp, -1, NULL, 0);
static wchar_t pwText[1000];
if (dwNum>1000) dwNum=1000;
MultiByteToWideChar (CP_ACP, 0, temp, -1, pwText, dwNum);
return pwText;
}