gpt4 book ai didi

c - 将局部指针变量的地址返回给 main() 函数

转载 作者:行者123 更新时间:2023-12-04 11:08:47 24 4
gpt4 key购买 nike

在下面的示例中,函数 func() 将一个局部指针变量的地址 返回给 main() 函数。它在 GCC 中运行良好。

那么,这是明确定义的行为吗?

#include <stdio.h>
#include <stdlib.h>

int *func(void);

int *func(void)
{
int *p;
p = malloc(sizeof *p);
*p = 10;
return p;
}

int main()
{
int *ptr = func();
printf("%d\n",*ptr);
return 0;
}

最佳答案

不,您返回一个指向局部变量(的地址)的指针。那会做类似的事情

int i = 10;
return &i;

相反,您返回一个指向分配在堆上的对象的指针。

虽然你确实有内存泄漏,因为你没有在任何地方释放内存。调用 free 应该通过代码调用你的函数来完成(除非它反过来返回指针,责任继续到他调用 -链)。

关于c - 将局部指针变量的地址返回给 main() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45325368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com