如果我的问题不是很清楚,很抱歉。我有一个这样的结构:
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没有错误信息。就这么放弃吧。请帮帮忙。
发布于 2012-09-04 08:47:43
您显示的代码是完全正确的。因此,在中止时,tag1或tag2很可能是无效的指针。这与您发布的代码没有任何关系。指针可以通过许多方式设置为无效。
为了弄清楚发生了什么,我会从仔细检查调用位置的代码设置tag1和tag2开始,然后-如果没有出现答案-继续使用valgrind检查内存覆盖错误。
注意,这就是C(++)如此具有挑战性的原因。
https://stackoverflow.com/questions/12255368
复制相似问题