堆栈区与一般的数据存储区有何异同?其重要作用是什么?

如题所述

堆区是动态分配内存的区,new出来的变量都放在堆区,栈区是放局部变量的区,比如一个函数里面定义一个Int x,这个变量就是放在栈区,函数调用结束后,就会释放这个变量所占的内存空间,一般的数据存储区主要有BSS段和只读存储区,还有全局区,全局区存初始化的全局变量和静态变量,BSS段存未初始化的全局变量和未初始化的静态变量,只读存储区存字符串字面值等比如"abc"
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-12-02
所谓堆栈区是程序要求系统为程序保留的固定尺寸的内存区域,尺寸大小由程序提出,属于编译选项。
存储区分为两部分:堆和栈
堆是一整片存储区,可以由程序使用,比如你在程序区中用malloc或new来申请存储区就是在堆中申请,如果堆满了,就申请失败;另外其他的子程序也会使用,比如printf,scanf也会在堆中临时申请内存存储输入输出的字符串
栈是一片存储区,由系统帮助管理,叫先进后出、后进先出存储区,这些存储区一般用于调用子程序时保存现场、保存参数、开设子程序变量,只要调用函数就会用到栈,只不过这些操作是c语言程序编译好后自动调用的,用户一般不会体会到它的使用,栈也会满,递归函数由于要出现大量调用函数的情况,尤其对栈的消耗很大。另外,嵌套循环也会用到栈。本回答被提问者和网友采纳
相似回答