请问栈和堆究竟有何区别?

发布网友

我来回答

2个回答

热心网友

栈和堆的地址是从两端相向增长的
栈很小,一般只有几十k,vc6好像是k
堆很大,在win32的虚拟地址空间可以分配到2g的内存

栈由程序自动操作,包括局部变量,参数传递,函数跳转时的返回地址等信息
堆由程序员自行管理内存,优势,节省空间,不用时即释放,缺点,可能因使用不但造成内存泄露,野指针,造成程序错误

热心网友

堆和栈的区别可以用如下的比喻来看出:
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就
走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自
由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由
度大。 (经典!)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com