Quantcast
Channel: 看雪安全论坛
Viewing all articles
Browse latest Browse all 9556

【求助】new char[]的内存释放问题

$
0
0
//Unicode的字符转换函数
char* UnicodeToAnsi(wchar_t* wszString) 

    //预转换,得到所需空间的大小
    int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL); 
    //分配空间要给'\0'留个空间 
    char* szAnsi = new char[ansiLen + 1]; 
    //转换 
    //unicode版对应的strlen是wcslen 
    ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL); 
    //最后加上'\0' 
    szAnsi[ansiLen] = '\0'; 
  return szAnsi;
}

void test()
{
    CString wpName = UnicodeToAnsi((wchar_t*)wupinName);
}
比如上面的test()函数调用UnicodeToAnsi函数,可是此函数中的char* szAnsi = new char[ansiLen + 1]语句申请了内存,那我每次调用UnicodeToAnsi函数会不会产生内存没释放的问题?该如何处理呢?不知道大家是如何处理字符转换问题的,求教了。

Viewing all articles
Browse latest Browse all 9556

Trending Articles