- 论坛徽章:
- 0
|
回复 #4 mo_yuan_ming 的帖子
他发的代码有问题,如果转换失败之后,就没有释放指针。正常的代码应该如下:
int ConvertEnc( const char *lpszFrom, const char *lpszTo, const char* lpszSrc, int nSrcLen, char* lpszDest, int* lpnDestLen)
{
iconv_t cv;
if ((cv = iconv_open(lpszTo, lpszFrom)) == (iconv_t)-1)
{
return -1;
}
iconv(cv, NULL, NULL, NULL, NULL);
char* lpszSrc1 = (char*)lpszSrc;
int ret = iconv(cv, &lpszSrc1, (size_t *)&nSrcLen, &lpszDest, (size_t *)lpnDestLen);
if (ret == -1)
{
iconv_close(cv);
return -1;
}
iconv_close(cv);
return 0;
} |
|