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

时间:2015-09-01 20:53:08

标签: c++ utf-8 messagebox

我有一个非常奇怪的问题。我的程序从服务器读取一些UTF-8内容到char缓冲区。然后,我使用函数char将此LPWSTR缓冲区转换为MultiByteToWideChar()。在此之后,我创建一个线程来显示一个包含服务器响应的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的第一个字符或第一个字被更改为任何其他符号。有时消息显示正确,有时不显示......

你有什么想法可能是造成这种奇怪行为的原因吗?

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

1 个答案:

答案 0 :(得分:0)

要“完成”这个问题我会回答。

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

感谢评论者指导我朝着正确的方向前进!