读书人

内存泄露有关问题函数返回wchar_t

发布时间: 2013-09-28 10:01:20 作者: rapoo

内存泄露问题,函数返回wchar_t *


请问,从图来看就是这个函数的问题吧?


如果pwText为空,就delete释放了,
但是不空呢,返回了,就没有释放,
那么因为成功返回没有释放导致的内存泄露吗??如果是该怎么办?内存泄露有关问题,函数返回wchar_t 内存泄露 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;
}

读书人网 >C++

热点推荐