首页 新闻 会员 周边

函数调用返回后栈空间未释放

0
悬赏园豆:30 [已解决问题] 解决于 2014-04-29 08:35

问题:

一个线程,在调用函数前,栈空间使用量为500多字节;

调用完某一函数返回后,栈空间使用量增大到7000多字节;

为什么函数返回后栈空间使用量没有恢复到500多自己呢?

不是说好释放的嘛~~

快乐的凡人721的主页 快乐的凡人721 | 老鸟四级 | 园豆:3918
提问于:2014-04-28 17:36
< >
分享
最佳答案
0

不是有stdcall么。。一个是调用者清栈,一个是被吊者清栈

收获园豆:30
方东信 | 菜鸟二级 |园豆:232 | 2014-04-28 20:18

多谢了!现在问题原因基本上确定了。

首先是调用函数之后,如果栈空间增大了,系统不会使之自动减小,以备后面调用时使用;

然后500多自己增加到7000多字节的原因是,有一个调用的函数里面有三个长度为2224字节的局部变量,加上其它一些内容,增加到7000多字节是可能的。

优化方式:

将长度过长的局部变量更改为静态变量、全局变量或动态分配的形式,以减少栈空间的使用。

你说的这个我会去研究研究啊!再次感谢!

快乐的凡人721 | 园豆:3918 (老鸟四级) | 2014-04-29 08:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册