为什么在有的函数中返回指针本地变量就无效了?

如图

img

函数中局部变量会被回收的,需要在函数内部手动转存到全局变量 或者 静态变量

你这个函数应该是可以通过的,虽然a是函数内部变量,但在返回时,a.array和a.size都是值拷贝,都是可以赋值到外部的Array变量的,由于array是动态分配的空间,因此函数结束后并不会被系统回收,外部赋值的array地址仍旧可以控制这个内存空间。但需要外部来free(a.array)了,这里假设调用代码为 Array a = array_create(100);这样子

问题的关键在于是否存在局部对象被引用的情况,如果Array的array指针变量引用了局部变量就会导致失效,但是动态申请的内存由于没有释放所以不会有问题。