C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了返回指向自动变量的指针大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
说你有以下功能
char *getp()
{
    char s[] = "hello";
    return s;
}

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

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

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

解决方法

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

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

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

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

大佬总结

以上是大佬教程为你收集整理的返回指向自动变量的指针全部内容,希望文章能够帮你解决返回指向自动变量的指针所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:指针