C 分段错误:尝试修改结构时为11

C 分段错误:尝试修改结构时为11,c,segmentation-fault,systems-programming,C,Segmentation Fault,Systems Programming,我试图将char*参数存储到结构指针的数据成员中。但是当我尝试这样做时,我收到了一个分段错误:11 void macro_set(char *name, char *body) { verify(body != NULL, "null arg body"); bool nameExists = false; if(macro_list.name == NULL) { macro_list.name = Strdup(name);

我试图将char*参数存储到结构指针的数据成员中。但是当我尝试这样做时,我收到了一个分段错误:11

void macro_set(char *name, char *body)
{
    verify(body != NULL, "null arg body");

    bool  nameExists = false;

    if(macro_list.name == NULL)
    {
        macro_list.name = Strdup(name);
        macro_list.body = Strdup(body);
    }
    else
    {
        struct macro *current = &macro_list;

        for(; current != NULL; current = current->next)
        {

          if(strcmp(name, current->name) == 0)
          {
              current->body = Strdup(body);
              nameExists = true;
          }
        }

        if(!nameExists)
        {
            current->name = Strdup(name);           
        } 
    } 
}

尝试将名称存储到当前->名称时出错。感谢所有能帮忙的人

如果
宏列表
元素与
名称
不匹配,则
for
循环将退出

nameExists=false

current=NULL

然后后续的
if
将为true,并且该行

current->name = Strdup(name);
有效分配

((struct macro *) NULL)->name = Strdup(name);

如果
宏列表
元素与
名称
不匹配,则
for
循环将退出

nameExists=false

current=NULL

然后后续的
if
将为true,并且该行

current->name = Strdup(name);
有效分配

((struct macro *) NULL)->name = Strdup(name);

你的标准不应该大写!Strdup是我程序中的一个宏,因为我需要一些附加功能。
macro\u list
已在我代码的另一部分的内存中分配您的Strdup不应大写!Strdup是我程序中的一个宏,因为我需要一些附加功能。
macro\u list
已在我代码的另一部分的内存中分配