C 分段错误:尝试修改结构时为11
我试图将char*参数存储到结构指针的数据成员中。但是当我尝试这样做时,我收到了一个分段错误:11C 分段错误:尝试修改结构时为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);
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 = ¯o_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
已在我代码的另一部分的内存中分配