在函数执行完以后函数内部声明的数组空间会被释放么?

EFanZh 2010-10-05 11:43:47
如题

int *f(void)
{
int a[64] = { 0 };
return a;
}


能这么做么?
...全文
1256 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
saishow 2010-10-06
  • 打赏
  • 举报
回复
释放了...
megtra 2010-10-06
  • 打赏
  • 举报
回复
不能返回指向“栈空间”的指针。
justkk 2010-10-06
  • 打赏
  • 举报
回复
把a[64]声明为static是可以的
ningweidong 2010-10-06
  • 打赏
  • 举报
回复
这么做是不对的。
但是可以返回malloc申请的内存。
Network90 2010-10-06
  • 打赏
  • 举报
回复
函数完了 函数内除静态变量外所有内存空间都将被释放 而如果返回了一个执行函数局部变量的指针 也将是一个指向无效空间的指针
小魔菇 2010-10-05
  • 打赏
  • 举报
回复
函数内部申明的非常量变量都会暂时放在堆栈中
当函数执行完了 堆栈被清空了 所以存放的东东也玩完了
所以不能这样做
arong1234 2010-10-05
  • 打赏
  • 举报
回复
当然不能,数组会被释放,返回的指针不再合法

69,387

社区成员

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

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