对不起,如果我的问题不是很清楚。 我有这样的结构:
typedef struct
{
uint32_t typeSet;
}DataTypeTagInfo;
以下函数用于统一两个typeSet:
DataTypeTagInfo* unifyTagInfo(DataTypeTagInfo* tag1, DataTypeTagInfo* tag2){
if(tag1 == NULL) return tag2;
else if(tag2 == NULL) return tag1;
tag1->typeSet |= tag2->typeSet;
return tag1;
}
程序在执行以下行时退出:
tag1->typeSet |= tag2->typeSet;
在示例运行中,我遵循以下值:
tag1->typeSet = 3917954189
tag2->typeSet = 2536589
没有错误消息。刚退出。请帮忙。
答案 0 :(得分:2)
您展示的代码非常完美。因此,在中止时,tag1
或tag2
很可能是无效指针。这与您发布的代码无关。指针可能在许多方面被设置为无效。
要弄清楚发生了什么,我首先要仔细检查呼叫网站上的代码设置tag1
和tag2
,然后 - 如果答案没有出现 - 继续使用valgrind
检查内存覆盖错误。
请注意,这使得C(++)如此具有挑战性。