导读 大家好,我是小科,我来为大家解答以上问题。堆和栈的区别面试题,堆和栈的区别很多人还不知道,现在让我们一起来看看吧!1、堆和栈2、栈:...
大家好,我是小科,我来为大家解答以上问题。堆和栈的区别面试题,堆和栈的区别很多人还不知道,现在让我们一起来看看吧!
1、堆和栈
2、栈:由编译器自动分配并且释放,一般存储函数的参数局部变量等
3、堆:由程序员分配释放,若程不释放则系统释放
4、区别一:申请内存方式
5、栈:由系统自动分配,如变量的声明的同时会开辟空间,(int a; 开辟4个字节的空间)(静态指定)
6、堆:由程序员申请,需要制定大小(动态分配)
7、区别2:系统响应的不同
8、栈:只要剩余空间大于申请内存,系统就会提供,否则会栈溢出
9、堆:便历空闲地址链表,找到符合要求的,就删除该地址分配给程序,内存的首地址记录分配的大小,(方便delete)多余的内存回收
10、区别3:空间大小不同
11、栈:连续的,编译时就确定的常数
12、堆:不连续,他的上限决定于系统中有效的虚拟内存
13、区别4:执行效率的不同
14、栈:由系统分配,速度快
15、堆:程序员分配,速度慢,容易产生内存碎片,不过用起来方便;
16、区别5:执行函数的不同
本文到此讲解完毕了,希望对大家有帮助。