0

我正在开发 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 = "Invalid Command. Spaces are not allowed too!!"; 但在下一行之后,字符串发生了变化。LPBYTE lp=byBuffer ; 虽然它适用于像 OK, GOOD JOB 这样的小字符串。ETC..

我通过设置断点来调试整个代码。此外,该函数已被调用到另一个函数,其中 (LPBYTE lpBuffer) 收到了该值。

请帮忙

4

1 回答 1

2

您向我们展示的代码看起来不错,所以我冒险出去猜测一下。

我猜你正试图从一个函数中返回这个缓冲区:

LPBYTE lp = byBuffer;
return lp;

如果是这种情况,那么局部变量byBuffer将在函数末尾被销毁,并且指针不再指向有效内存。如果你能在输出中看到任何可识别的东西,你就很幸运了。

于 2012-09-12T18:09:22.130 回答