堆的理解?
1.堆通常是一个可以被看做一棵树的数组对象,堆总是满足下列性质:
.堆中某个节点的值总是不大于或不小于其父节点的值
.总是是一颗完全二叉树。
2.堆是在程序运行时,而不是在编译时、申请某个大小的内存空间,动态分配内存,对其访问和对一般内存的访问没有任何区别。
3.堆是应用程序在运行时的时候请求操作系统分配给自己的内存,一般是申请给予的过程。
4.堆是指程序运行时申请的动态内存,而栈只是指一种使用堆的方法。
栈的理解?
1.它是种运算受限的线性表,限制是仅在表的一端进行插入和删除运算,被称为,栈顶,相对地,把另一端称为栈底。
2.它是一个桶,后放进去的先拿出来,它下面本来有的东西要等它出来以后才能出来(先进后出)
3.它是操作系统在建立某个程序时或者线程,在编译的时候可以指定需要的Stack的大小。