0

这样的函数会导致悬空指针吗?

int *foo () {
    int a[2] = {2, 3};
    int *p = NULL;
    p = a;
    return p;
}
4

2 回答 2

6

是的。您正在返回一个指向具有自动存储持续时间的数组的指针。当函数返回时指针无效。

于 2013-10-05T01:19:16.760 回答
2

永远不要返回指向自动局部变量的指针。
在您的情况下,变量a一旦返回就不存在foo,因此指向它的指针将无效(调用未定义的行为)。

于 2013-10-05T01:25:54.837 回答