首页 新闻 会员 周边 捐助

函数的局部变量所需的内存空间,在哪里分配?

0
[待解决问题]

进程的栈上?进程的堆上?进程的数据区?都可以?

C++
adaan的主页 adaan | 初学一级 | 园豆:193
提问于:2013-09-10 18:36
< >
分享
所有回答(3)
0

局部变量存放在栈区, 局部变量脱离其作用域时能够自动释放。

wid | 园豆:238 (菜鸟二级) | 2013-09-10 19:33

问题时局部变量的内存空间在哪里分配!?

支持(0) 反对(0) adaan | 园豆:193 (初学一级) | 2013-09-12 17:43
0

进程的栈上

Fedel | 园豆:232 (菜鸟二级) | 2013-09-26 20:14
0

正确答案是线程的栈上。说成进程的栈是错误的(不存在进程的栈的概念,只有进程的虚拟空间概念,也就是通常的那个 4G 空间),进程包含多个线程可以认为是线程的逻辑分组的概念。线程才是资源调度的基本单位,每个线程具有自己独立的栈。所以你的代码是由一个线程在运行,例如如下代码:

void foo()

{

   int a;

   ...

}

这时 a 位于执行这个函数的线程的栈上。被编译成机器码时 a 的具体表现方式是 [ebp 或 esp + offset] 的形式。

hoodlum1980 | 园豆:573 (小虾三级) | 2013-10-07 14:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册