gpt4 book ai didi

c++ - 将 LPVOID 转换为 int 指针的奇怪错误

转载 作者:行者123 更新时间:2023-11-28 01:05:30 27 4
gpt4 key购买 nike

我收到这个奇怪的错误:

MyView:OnInitialUpdate()
{
int* my_int;
*(my_int) = 1;
AfxBeginThread(MyThread,my_int);
}

UINT MyThread(LPVOID param)
{
int* my_int = reinterpret_cast<int*>(param);
message(*(my_int));
return 0;
}

void message(int value)
{
CString txt;
txt.Format(_T("%d"),value);
AfxMessageBox(txt);
}

消息框输出为4250636。

现在,如果我在将值传递给线程之前添加另一个消息框:

MyView:OnInitialUpdate()
{
int* my_int;
*(my_int) = 1;
message(*(my_int));
AfxBeginThread(MyThread,my_int);
}

两个消息框输出都是1。

最佳答案

int* my_int;
*(my_int) = 1;

这是未定义的行为。您没有初始化 my_int,因此您取消引用了一个无效指针。

相反,在您的 MyView 类中创建一个成员 x,然后更改为:

int* my_int = &x;

关于c++ - 将 LPVOID 转换为 int 指针的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6363439/

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