C Win32api传递结构以创建线程

C Win32api传递结构以创建线程,c,winapi,createthread,C,Winapi,Createthread,我正试图把这个结构放到我的线程中,但是我却在其中找到了垃圾 我正在使用的结构: typedef struct { HWND hWnd; int cntrlid; TCHAR text[BUFF]; }parametros; 在消息开关中,我可以控制启动线程的按钮: case IDC_TAB_A: threaddata.hWnd=hWnd; threaddata.cntrlid=IDC_TAB_A; _tcscpy(

我正试图把这个结构放到我的线程中,但是我却在其中找到了垃圾

我正在使用的结构:

typedef struct {
    HWND hWnd;
    int cntrlid;
    TCHAR text[BUFF];
}parametros;
在消息开关中,我可以控制启动线程的按钮:

    case IDC_TAB_A:
        threaddata.hWnd=hWnd;
        threaddata.cntrlid=IDC_TAB_A;
        _tcscpy(threaddata.text, _T("Carregou A"));
        hThreadsender=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadSenderProc, (LPVOID) &threaddata, 0, NULL);

        break;
以及处理我得到的线程的函数:

DWORD WINAPI ThreadSenderProc(LPVOID param){

    parametros temp=*((parametros *)param);
    EnviaLetra(temp.hWnd, temp.text,temp.cntrlid);

    return 0;
}
一定是出了什么事,但我搞不懂,有人能帮忙吗

提前谢谢!
(对不起,英语不好!)

在线程可以访问之前,您的结构已被破坏。可以使用事件进行同步,也可以动态分配结构

PS:移除可怕的
(LPTHREAD\u START\u例程)
石膏。如果正确声明函数,则不需要它。除非您确切知道自己在做什么以及为什么,否则函数指针强制转换将被禁止。
哦,
(LPVOID)
演员也没用。

是复制粘贴:p这是一个uni作业,所以我只是复制课堂示例,去mallock那个结构并检查发生了什么感谢你的回答上帝,伙计,我爱你,我今天拉了这么多头发,在4个pomodoros之后,这个问题发生了,5个之后我们分享,谢谢@请接受答案。在这里,使用堆分配是正确的解决方案。使用事件同步是一项繁重的任务,而且成本更高。这是一个糟糕的解决方案。堆分配是一种方法。是的,停止那些肮脏的铸造@DavidHeffernan我想我现在接受了它,在这里发布是新的,通常我潜伏着我唯一的问题是我没有看到明显的错误,我正在使用的结构正在被破坏。写断点会显示值意外更改的原因。