2 lsq8178 lsq8178 于 2014.03.31 08:57 提问

char* 转 wchar_t* 什么情况下一点错都不出

char* 转 wchar_t*
我用的是这个方法
char* text = "abcdef";
int nu = strlen(text);
int n =(size_t) MultiByteToWideChar( CP_ACP, 0, text,(int)nu, NULL, 0) + 2 ;
wchar_t* pwstr = new wchar_t[n];
if (pwstr)
{
memset(pwstr, 0x00, sizeof(wchar_t) * n);
MultiByteToWideChar(CP_ACP, 0, text, nu, pwstr, nu);
}
转好之后将 pwstr传给一个函数,这个函数的实现是别人写的一个库,此时会报错,错误为:内存xxxx出的_com_error_,
然后我这样写:wchar_t* wstr = L"abcdef";
再将wstr传给那个函数时就正确了,很郁闷。
最后我将转化部分的
wchar_t* pwstr = new wchar_t[n];
换成static wchar_t pwstr[50];再去执行就好了,很不理解,请各位大牛看看,帮帮忙!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!