c - 返回本地指针

标签 c pointers

我的问题是这个问题的延伸: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/

相关文章:

pointers - 我如何比较 Go 中的指针?

c++ - VC++中通过A类函数指针调用B类成员函数

c - 当 malloc 结构指针时,它们的固定大小变量是否会进入堆栈?

c - Objective-C UTF-8 和 UTF-16 字符串(以字节表示)的差异

c - 使用 fork 查找矩阵中的数字

mysql - 使用 c 删除对 mysql 的查询

计算 ARM Cortex-a8 BeagleBone Black 上的时钟周期计数

c - 从列表中删除重复元素的最有效方法

c++ - 通过引用传递 void*

Javascript:将函数指针放入对象中?