c语言里什么变量存储在堆中什么变量存储在栈中啊!

如题所述

来自百科:

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、全局区(静态区)(static)— 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。
4、文字常量区 — 常量字符串就是放在这里的,程序结束后由系统释放 。
5、程序代码区 — 存放函数体的二进制代码。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-25
函数的局部变量、参数一般在栈中分配空间存储
也不是绝对的,编译器可能会优化使用寄存器传递参数
不过可以显式地规定函数的参数传递方式,可以查一下stdcall,fastcall等宏的具体定义和作用
局部变量中的静态变量的空间在数据段中,不在栈中

程序中动态分配的空间,如malloc分配的空间位于堆中
第2个回答  2010-05-22
临时变量都在堆里,
关于栈。。很复杂,我也是一知半解
相似回答