如何移动已分配给另一个结构的内存

时间:2016-01-27 16:17:58

标签: c struct strdup

我有以下结构:

typedef struct{
    char* name;
    int score;
}Student;

typedef struct{
    char* name;
    int score;
}TeachingAssistant;

我已strdupname结构中的Student变量中添加了一个字符串。

我想知道如何将strdup'd name指针变量移动到TeachingAssistant结构,这样我就不必再次strdup了。

2 个答案:

答案 0 :(得分:1)

strdup结构中填充name时,您可能仍希望使用TeachingAssistant。如果不这样做,只需复制指针,那么如果free指针在一个结构中,则另一个结构中的指针变为无效。你必须实现方案来跟踪指针引用。

最好只需strdup您需要的字符串,并在不再需要时为每个副本free

答案 1 :(得分:0)

typedef struct{
  Student *XYZ;
  //char* name;
  //int score;
}TeachingAssistant;

您可以将结构Student的结构声明为结构TeachingAssistant的成员,而不是现在的定义,这样您就可以使用它来访问name而无需创建重复。