c++ MessageBox 第一个字符或单词错误

c++ MessageBox first character or word wrong

我遇到了一个非常奇怪的问题。我的程序从服务器读取一些 UTF-8 内容到 char 缓冲区。然后我使用函数 MultiByteToWideChar() 将此 char 缓冲区转换为 LPWSTR。在此之后,我创建了一个线程来显示包含服务器响应的 MessageBox。

这是我编辑的代码:

function checkMessages()
{
    // some code...

    CreateThread(NULL, 0, &CreateMessageBox, lpszText, 0, NULL);

    // some code...

    delete[] lpszText; // this causes the error!!
}

DWORD WINAPI CreateMessageBox(LPVOID lpParam)
{
    MessageBoxW(
        NULL,
        (LPCWSTR)lpParam,
        L"You received a message!",
        MB_TOPMOST
        );

    return 0;
}

问题是有时 MessageBox 的第一个字符或第一个单词会更改为任何其他 symbol/s。消息有时显示正确,有时显示不正确...

您是否知道造成这种奇怪行为的原因是什么?

编辑: 在上面编辑过的代码示例中,我已经添加了错误生成代码行。 感谢所有帮助我找到错误的评论者!

"complete"这个问题我来回答一下

如我的问题代码示例所示,这部分 delete[] lpszText; 导致了错误。 似乎它在创建的线程尝试访问变量时几乎同时清除了变量。我删除了这条线,一切正常!

感谢那些指引我正确方向的评论者!