我已经用值填充了以下结构,我不知道如何再将它们变空,尤其是最后两个,因为它们包含指针值。任何帮助表示赞赏。
struct HEADER
{
unsigned short id;
unsigned char rd :1;
unsigned char tc :1;
unsigned char aa :1;
};
struct QUESTION
{
unsigned short qtype;
unsigned short qclass;
};
struct R_DATA
{
unsigned short type;
unsigned short class;
unsigned int ttl;
unsigned short data_len;
};
struct RES_RECORD
{
unsigned char *name;
struct R_DATA *resource;
unsigned char *rdata;
};
typedef struct
{
unsigned char *name;
struct QUESTION *ques;
} QUERY;
答案 0 :(得分:0)
为了填充这些值,您可以相应地为这些指针free()
分配内存。例如:
typedef struct
{
unsigned char *name;
struct QUESTION *ques;
}QUERY;
QUERY *q = malloc(sizeof(QUERY));
q->name = malloc(20);
q->ques = malloc(sizeof(struct QUESTION));
//Filling the values and using them when done you need to free the allocated memory
现在释放他们
free(q->name);
q->name = NULL;
free(q->ques);
q->ques = NULL;
free(q);
q = NULL;
答案 1 :(得分:0)
由于嵌套的结构和指针,您不能使用bzero或memset()。您只需将值设置为0并释放它们并按正确的顺序将它们设置为NULL。换句话说,不要对包含不一致指针的任何内容的引用使用NULL。
直接的东西