![](/img/trans.png)
[英]Segmentation fault when trying to store a pointer to another pointer variable
[英]segmentation fault when assign returned pointer to variable
我有以下代碼
char * find(struct node *r,char *str)
{
r=head;
if(r==NULL)
{
return NULL;
}
while(r!=NULL)
{
if((strcmp(str,r->name) == 0))
{
printf("found %s\n",r->name);
char *p = malloc(256);
strcpy(p,(const char *)r->name);
return p;
}
r=r->next;
}
return NULL;
}
並在main
:
void main ()
{
......
......
char *ret;
ret = find(n,"someone");
printf("%s\n",ret);
.......
}
使用上面的代碼,我總是遇到分段錯誤。 但是當我ret
變量時。 有用。
void main ()
{
......
......
printf("%s\n",find(n,"someone"));
.......
}
您的代碼中有很多問題(邏輯和程序問題)。 例如,
r
作為參數,但立即將其替換為head
。 為什么要使用它作為參數呢? strcmp()
之前,您沒有在r->name
檢查NULL
。 malloc()
是否成功。 find()
返回NULL,則在printf()
使用返回值將導致未定義的行為 。 現在,分割錯誤是不確定行為的副作用之一。 首先更正上述問題,以使您的代碼穩定。
注意:與此值得一提的是, main()
的正確簽名是int main(void)
。
您在r
上檢查NULL
,但不在str
和name
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.