关于BOOL指针判断的问题

IamYanggq 2019-02-10 10:21:47
使用如下方法创建一个线程
```
thread GetInf_Result(Translate_Thread, Inf_Send_true);
GetInf_Result.detach();
```
其中Translate_Thread是线程函数,Inf_Send_true定义:

```
struct Thread_Run_Translate {
BOOL *IF;
};

Thread_Run_Translate *Inf_Send_true = new Thread_Run_Translate;
Inf_Send_true = &IF_Class;
```
IF_Class定义在类中为BOOL类型

在Translate_Thread中判断值,如下:

```
void Translate_Thread(Thread_Run_Translate *Inf) {
if(Inf->IF == NULL)
//***
}
```
此时判断有误

求解决办法
...全文
417 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2019-02-13
  • 打赏
  • 举报
回复
如果指针有值就用 != NULL 判断
前提是你先自己初始化为NULL,否则可能是野指针(也就是不一定是NULL),因为new Thread_Run_Translate只是给构造体分配内存,内存原来里面有什么数据并不知道(这块内存有可能被别的程序释放的,里面的信息不可预测,一般都用memset(m, 0, sizeof(m))来初始化new出来的内存区)
大苟姬 2019-02-12
  • 打赏
  • 举报
回复
struct Thread_Run_Translate { BOOL *IF=NULL; };
ForgetTomorrow 2019-02-12
  • 打赏
  • 举报
回复
指针是需要初始化NULL的,如果不初始化NULL不能这样判断
qybao 2019-02-12
  • 打赏
  • 举报
回复
if出什么问题?
Inf_Send_true = &IF_Class; 这里改成
Inf_Send_true->IF = &IF_Class; 试试
IamYanggq 2019-02-12
  • 打赏
  • 举报
回复
引用 3 楼 qybao 的回复:
if出什么问题? Inf_Send_true = &IF_Class; 这里改成 Inf_Send_true->IF = &IF_Class; 试试
sorry 打错了
IamYanggq 2019-02-12
  • 打赏
  • 举报
回复
引用 4 楼 ForgetTomorrow 的回复:
指针是需要初始化NULL的,如果不初始化NULL不能这样判断
引用 5 楼 chenxiaohui318 的回复:
struct Thread_Run_Translate { BOOL *IF=NULL; };
但如果指针有值应该怎么样判断呢?
  • 打赏
  • 举报
回复
需要先判断Inf是否为NULL
IamYanggq 2019-02-11
  • 打赏
  • 举报
回复
Inf是不为NULL,Inf->IF调试查看值也没有问题,就是if出问题

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧