尝试从结构内部打印字符串值时遇到分段错误。 我正在尝试访问cdata参数。
我在指定的行出现了分段错误。
struct node_id{
union {
uint32_t numeric;
struct my_string *string;
struct my_bytestring *opaque;
} identifier;
enum my_identifiertype type;
uint16_t index;
};
struct my_string{
uint32_t len : 31;
uint32_t free: 1;
union {
const char *cdata;
char *data;
} d;
};
get_nodeid(node_t node, struct nodeid *id){
//some code
}
struct nodeid *id;
get_nodeid(node,id);
printf("%s", id->identifier.string->d.cdata ); // ------- Seg Fault comes here
nodeid_clear(&id);
如果我仅使用格式说明符%o(object)打印id,它不会产生段错误,并且在调试时显示无法访问cdata的内存位置。
如果在代码的其他部分也以相同的方式使用了分段错误,为什么有人可以访问它时为什么会出现分段错误呢?