0

我试图将我的 char* 参数存储到结构指针的数据成员中。但是当我尝试这样做时,我收到了 Segmentation Fault: 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);           
        } 
    } 
}

当我尝试将名称存储到 current->name 中时发生错误。感谢任何可以提供帮助的人!

4

1 回答 1

3

如果没有任何macro_list元素匹配name,则for循环将以

nameExists = falseand退出
current = NULL

然后后续if将是真的,并且该行

current->name = Strdup(name);

有效分配

((struct macro *) NULL)->name = Strdup(name);
于 2012-03-13T03:10:40.360 回答