说你有以下
功能:
char *getp()
{
char s[] = "hello";
return s;
}
由于函数在外部函数中返回一个指向局部变量的指针,是否会导致内存泄漏?
附:我还在学习C,所以我的问题可能有点幼稚…
[更新]
所以,如果你想要返回一个新的char []数组(即可能是一个子字符串函数),那么你究竟返回什么?应该指向外部变量吗?即该函数不是本地的char []?
它不会导致内存泄漏.这将引起悬而未决的引用.局部变量分配在堆栈上,一旦超出范围就会被释放.因此,当
函数结束时,您返回的指针不再指向您拥有的内存.这不是内存泄漏(内存泄漏是当你分配一些内存,不要释放它).
[更新]:
为了能够返回一个函数中分配的数组,你应该把它分配给堆栈(例如堆),如:
char *test() {
char* arr = malloc(100);
arr[0] = 'M';
return arr;
}
现在,如果您在完成使用调用函数后没有释放内存,则会发生内存泄漏.