需要帮助重置C中的一些结构

时间:2015-03-24 04:08:54

标签: c

我已经用值填充了以下结构,我不知道如何再将它们变空,尤其是最后两个,因为它们包含指针值。任何帮助表示赞赏。

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;

2 个答案:

答案 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。

直接的东西