按位或两个无符号整数(程序崩溃)

时间:2012-09-04 00:24:11

标签: c crash bitwise-or

对不起,如果我的问题不是很清楚。 我有这样的结构:

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

没有错误消息。刚退出。请帮忙。

1 个答案:

答案 0 :(得分:2)

您展示的代码非常完美。因此,在中止时,tag1tag2很可能是无效指针。这与您发布的代码无关。指针可能在许多方面被设置为无效。

要弄清楚发生了什么,我首先要仔细检查呼叫网站上的代码设置tag1tag2,然后 - 如果答案没有出现 - 继续使用valgrind检查内存覆盖错误。

请注意,这使得C(++)如此具有挑战性。