关于指针函数的一个问题

lingkeylbh 2007-03-07 08:42:07
返回指针的函数就叫指针函数对吧,
现在的问题是被调函数一经返回,所有分配的变量就被释放,这样的话是不是必须把返回那个变量指定为static或者malloc分配空间啊?
...全文
342 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2007-03-08
  • 打赏
  • 举报
回复
局部变量的生命期,
在函数返回后就丢失了 ~

如果仅需要返回一个局部变量值,
那么在函数末尾 return 该值即可 ~

如果是多个,
那么就需要用点技巧,
比如传递数组 或者 malloc分配空间并返回空间首地址等 ····
jixingzhong 2007-03-08
  • 打赏
  • 举报
回复
我的身影不是还没出现么 ···

楼主的理解是正确滴 ~
fiveyes 2007-03-08
  • 打赏
  • 举报
回复
楼主理解正确。
springlie 2007-03-08
  • 打赏
  • 举报
回复
指针函数的返回值指针一般不是指向此函数的局部变量吧,何苦呢?
happytang 2007-03-07
  • 打赏
  • 举报
回复
不要记什么指针函数,函数指针,很容易混的
主要在于理解
记住动态局部变量,也就是在栈内的不能返回
p = fun1();后然p = fun2();的话fun1()里面分配的内存什么释放掉啊
你这样会造成内存泄漏,如果第一快不要的话一定要及时free
lingkeylbh 2007-03-07
  • 打赏
  • 举报
回复
怎么我问的帖总有瞌睡虫或者feng的身影啊
believefym 2007-03-07
  • 打赏
  • 举报
回复
p=fun2()后,fun1申请的那块空间的就无法free,因为找不到地址了
在p=fun2()之前先释放
lingkeylbh 2007-03-07
  • 打赏
  • 举报
回复
如果是malloc返回的话,需要自己释放吗?
有函数fun1和fun2都返回相同类型的指针,函数内部都是通过malloc分配内存的
比如说指针p = fun1();后然p = fun2();的话fun1()里面分配的内存什么释放掉啊
lockhall 2007-03-07
  • 打赏
  • 举报
回复
malloc()就是在堆上分配内存了,需要自己释放

static就不用说了

二者皆可!
WingForce 2007-03-07
  • 打赏
  • 举报
回复
static或malloc均可

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧