我正在研究Visual Studio C ++。
我有这些代码:
CString str;
BYTE byBuffer[10000] = { 0 };
str ="Invalid Command. Spaces are not allowed too!!";
strcpy_s(reinterpret_cast<LPSTR>(byBuffer), 10000, T2CA(str ));
问题是byBuffer =“无效命令。也不允许空格!!”;但在以下行之后,字符串会发生变化。 LPBYTE lp = byBuffer;虽然它适用于像OK,GOOD JOB这样的小字符串。等等。
我正在通过设置断点来调试整个代码。此外,此函数已被调用到另一个函数,其中(LPBYTE lpBuffer)收到此值。
Plz帮助
答案 0 :(得分:2)
你向我们展示的代码看起来还不错,所以我正在努力做出猜测。
我猜你正试图从一个函数返回这个缓冲区:
LPBYTE lp = byBuffer;
return lp;
如果是这种情况,则局部变量byBuffer
在函数结束时被破坏,指针不再指向有效内存。如果您能在输出中看到任何可识别的内容,那么您很幸运。