首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-09-28 
内存泄露问题,函数返回wchar_t *请问,从图来看就是这个函数的问题吧?如果pwText为空,就delete释放了,但是

内存泄露问题,函数返回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;
}

热点排行