局部变量好像提前被清除了?
void GetMyNum( WCHAR *pMyNum,DWORD *pdwChars )
{
BYTE pNum[]={0x23,0x45,0x56,0x34,0x4f,0xff,0xff,0xff};
//这里 dwChars必须声明为 const DWORD,不然会被提前清除,不知道为什么?
DWORD dwChars = sizeof( pNum )*2;
if( pdwChars )
{ *pdwChars = dwChars; }
if( !pMyNum )
{ return; }
for( UINT i=0; i< sizeof( pNum ) ; i++ )
{
WCHAR myChar[2]={0};
_stprintf( myChar,_T("%02x"), pNum[i] );
_tcsncat( pMyNum, myChar, 2 );
}
//运行到这里时,dwChars被置为零了,有时候甚至提示 access violation ,搞不懂了
//替换 f为 空格
for( UINT i=0; i< dwChars; i++ )
{
if( towlower( pMyNum[i] ) == _T('f') )
{ pMyNum[i] = _T(' '); }
}
}
//-----------------------------------------
求解,dwChars为什么必须声明为 const DWORD ?
[解决办法]
_tcsncat( pMyNum, myChar, 2 );
内存越界了吧
[解决办法]
不可能被提前清除的,局部变量会在函数调用完清除。
[解决办法]
不应该为0,除非在这中间有修改该变量的。
[解决办法]
不要总在错误提示的地方找错误,要学会推理,跟踪
[解决办法]
也许错误出在其他函数,因为非法访问内存,把这里的变量改了。