堆和栈的区别面试题(堆和栈的区别)

导读 大家好,我是小科,我来为大家解答以上问题。堆和栈的区别面试题,堆和栈的区别很多人还不知道,现在让我们一起来看看吧!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:执行函数的不同

本文到此讲解完毕了,希望对大家有帮助。

最新文章