gpt4 book ai didi

c++ - 结构作为 AfxBeginThread 中的参数

转载 作者:行者123 更新时间:2023-11-30 01:26:45 24 4
gpt4 key购买 nike

我尝试将结构作为参数传递。

全局结构:

struct ThreadParams 
{
HWND window;
LIB::ServiceContainer* mrt;
};

在主线程中:

ThreadParams threadparams;
threadparams.window = (HWND) GetSafeHwnd();
threadparams.mrt = m_rt;

CWinThread* pthread1;
pthread1 = (CWinThread*) AfxBeginThread(Thread1,(LPVOID)&threadparams,THREAD_PRIORITY_NORMAL,0,0,0);

课外:

UINT Thread1(LPVOID lp)
{
ThreadParams* threadparams = (ThreadParams*) lp;

HWND hmainWindow = threadparams->window;
LIB::ServiceContainer* m_rt = threadparams->mrt;

}

虽然它编译得很好,但我在运行时遇到了一个错误(这是一个意外错误),我猜我弄乱了指针 m_rt。你看到任何明显的错误了吗?

最佳答案

ThreadParams threadparams;

请注意,如果它是一个局部变量,并且声明它的函数在创建线程后返回,则线程引用一个不再存在的对象,因为局部变量在函数返回时被销毁。如果是这种情况,则使用 new 创建一个新实例,而不是:

ThreadParams * pthreadparams = new ThreadParams();

并将其传递给线程,这样即使创建线程的函数返回,它也会存在。当然,当你完成它时,你必须手动删除它。

关于c++ - 结构作为 AfxBeginThread 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com