OCX中,我想把char*转CString
报Unhandle exception in **.exe(MFC42D.dll):0xc0000005 Access Violation
代码如下:
byte OutData[256];
memset(OutData,0,sizeof(OutData));
memcpy(OutData,bTmpOutInfo,256); //bTmpOutInfo为前面生成的数据,我把他拷贝到OutDatam_transOutData.Format("%s",OutData); //这就报错了?网上查了下,好像是堆栈或者内存溢出,但不知道怎么改,有高手知道么?
报Unhandle exception in **.exe(MFC42D.dll):0xc0000005 Access Violation
代码如下:
byte OutData[256];
memset(OutData,0,sizeof(OutData));
memcpy(OutData,bTmpOutInfo,256); //bTmpOutInfo为前面生成的数据,我把他拷贝到OutDatam_transOutData.Format("%s",OutData); //这就报错了?网上查了下,好像是堆栈或者内存溢出,但不知道怎么改,有高手知道么?
p[len(p)]=’\0’;
Cstring str(p);
-------------------------------------------
你的OutData是BYTE[]char* -> CString
char buf[] = {"...."};
CString strText(buf);
memset(OutData,0,sizeof(OutData));
memcpy(OutData,bTmpOutInfo,256);CString strTest(OutData);我如果写成ls2位的写法,就报Cannot use __try in functions that require object unwinding 错了,真纠结
CString strTest(OutData); //中间变量 strTest 去接收OutData时可以成功的
m_transOutData = CString(OutData);就是m_transOutData 这个变量无法赋值过去
char buf[256] = {0};
memcpy(buf, OutData, 256);
CString str(buf);
AfxMessageBox(str);
BYTE OutData[256] = {'A', 'B', 'C', 'D', 'E', 'F', '\0'};
char buf[256+1] = {0};
memcpy(buf, OutData, 256);
CString str(buf);
AfxMessageBox(str);
CString strTest(OutData);
这样做是可以的,但是
m_transOutData = strTest;
的时候还是报溢出的错误,所以我现在怀疑是m_transOutData 没初始化的问题,但是m_transOutData(CString)类型怎么初始化?
你打开memory看看有没有越界呀,
不行发给我看看
[email protected]
你还可以启动RTC,