指针没有正确指向?

时间:2015-07-18 14:41:51

标签: c++ windows

我在线程中运行此代码,假设receivedPosts和td->窗口有效:

std::vector<Post> *receivedPosts_n = new std::vector<Post>;
*receivedPosts_n = receivedPosts;

SendMessage(td->window, WM_TIMER, IDT_TIMER_FIND_NEW_POSTS_CALLBACK, 
    (LPARAM) receivedPosts_n);

我在IDT_TIMER_FIND_NEW_POSTS_CALLBACK运行此代码(hwnd是td-&gt;窗口):

case IDT_TIMER_FIND_NEW_POSTS_CALLBACK:
    {
        std::vector<Post> *currentPosts_ptr = (std::vector<Post> *)lParam;

        //This vector turns up as undefined
        std::vector<Post> currentPosts = *currentPosts_ptr;
    }
    break;

但问题是* currentPosts_ptr会变成无效指针,即它指向随机存储器。

指针有什么问题?

感谢。

1 个答案:

答案 0 :(得分:0)

MSDN documentation表示对于WM_TIMER,lParam的消息值为

  

指向安装计时器时传递给SetTimer函数的应用程序定义的回调函数的指针。

如果您需要发送自定义消息,最好只使用专为此方案设计的WM_USER through 0x7FFF