加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

返回指向自动变量的指针

发布时间:2020-12-16 05:35:02 所属栏目:百科 来源:网络整理
导读:说你有以下功能: char *getp(){ char s[] = "hello"; return s;} 由于函数在外部函数中返回一个指向局部变量的指针,是否会导致内存泄漏? 附:我还在学习C,所以我的问题可能有点幼稚… [更新] 所以,如果你想要返回一个新的char []数组(即可能是一个子字符串
说你有以下功能:
char *getp()
{
    char s[] = "hello";
    return s;
}

由于函数在外部函数中返回一个指向局部变量的指针,是否会导致内存泄漏?

附:我还在学习C,所以我的问题可能有点幼稚…

[更新]
所以,如果你想要返回一个新的char []数组(即可能是一个子字符串函数),那么你究竟返回什么?应该指向外部变量吗?即该函数不是本地的char []?

解决方法

它不会导致内存泄漏.这将引起悬而未决的引用.局部变量分配在堆栈上,一旦超出范围就会被释放.因此,当函数结束时,您返回的指针不再指向您拥有的内存.这不是内存泄漏(内存泄漏是当你分配一些内存,不要释放它).

[更新]:
为了能够返回一个函数中分配的数组,你应该把它分配给堆栈(例如堆),如:

char *test() {
    char* arr = malloc(100);
    arr[0] = 'M';
    return arr;
}

现在,如果您在完成使用调用函数后没有释放内存,则会发生内存泄漏.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读