我的问题是这个问题的延伸:Returning pointer to a local structure
我编写了以下代码来创建一个空列表:
struct node* create_empty_list(void)
{
struct node *head = NULL;
return head;
}
我刚刚读到返回指向局部变量的指针是没有用的,因为当函数退出时变量将被销毁。我相信上面的代码返回了一个 NULL
指针,所以我不认为它是一个指向局部变量的指针。
在这种情况下分配给指针的内存在哪里。我没有在堆上分配任何内存,它应该在堆栈上,作为一个自动变量。但是当代码退出(到指针)时会发生什么,如果我尝试在程序中使用它,通过为这个指针分配一些指针/取消引用等等?
最佳答案
struct node* create_empty_list(void)
{
struct node *head = NULL;
return head;
}
相当于:
struct node* create_empty_list(void)
{
return NULL;
}
这很好。
如果你有类似的东西,问题就会发生:
struct node head;
return &head; // BAD, returning a pointer to an automatic object
关于c - 返回本地指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24184548/