返回指向自动变量的指针
发布时间:2020-12-16 05:35:02 所属栏目:百科 来源:网络整理
导读:说你有以下功能: char *getp(){ char s[] = "hello"; return s;} 由于函数在外部函数中返回一个指向局部变量的指针,是否会导致内存泄漏? 附:我还在学习C,所以我的问题可能有点幼稚… [更新] 所以,如果你想要返回一个新的char []数组(即可能是一个子字符串
说你有以下功能:
char *getp() { char s[] = "hello"; return s; } 由于函数在外部函数中返回一个指向局部变量的指针,是否会导致内存泄漏? 附:我还在学习C,所以我的问题可能有点幼稚… [更新] 解决方法
它不会导致内存泄漏.这将引起悬而未决的引用.局部变量分配在堆栈上,一旦超出范围就会被释放.因此,当函数结束时,您返回的指针不再指向您拥有的内存.这不是内存泄漏(内存泄漏是当你分配一些内存,不要释放它).
[更新]: char *test() { char* arr = malloc(100); arr[0] = 'M'; return arr; } 现在,如果您在完成使用调用函数后没有释放内存,则会发生内存泄漏. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |