当前位置
主页 > 365bet直播 >
桩和桩之间的区别
2019-09-12 09:35
大多数当前的计算机访谈问题都询问桩和桩之间的区别。让我们仔细谈谈两者之间的区别。
1)
各种管理方法
程序员通过调用系统库函数来管理动态存储,因此如果管理不够,内存就会丢失。
堆栈由计算机系统分配,系统具有特殊的日志存储堆栈指针。
2)
各种成长方法
桩长高,通常据说向上生长。
这是一个不连续的存储区域。
据说堆栈向下生长并向下增长。
这是一个连续的记忆区域。
(我个人理解这一点。
由于堆是人为分配的地址,因此分配的地址大小通常大于实际所需的存储器,从而导致不连续的存储区。
对于堆栈,系统有一个特殊的寄存器,用于存储堆栈的地址。插入堆栈由特殊指令(高级FILO)执行,因此它成为连续的存储区域。
如果你不理解它,你可能会收到警报。

3)
大小不同
堆大小可达4G。在32位Linux上,系统的有效虚拟内存也是3。
2G
桩的尺寸通常在1M到10M之间变化(这与桩非常不同)。
4)
不同的内存速度
电池内存速度很快。
如前所述,堆栈是一个用于分配内存的系统,由于这种FIFO堆栈顺序,堆栈的内存速度更快。
程序员分发堆并由C / C ++函数库提供。
而且机制更复杂。寻找合适大小的记忆区域是一个旅游。
然后需要时间。
5)
不同的存储内容
当调用堆栈时,堆栈首先按下调用函数中的下一条指令的地址(函数调用指令后的下一条可执行指令),然后是函数参数,然后是函数局部变量的地址。打电话给你。
在此调用结束时,首先获取局部变量,然后堆栈中的参数和顶部指针指向第一个保存指令的方向,程序继续执行下一个可执行指令点
堆通常将其大小存储在头字节中。堆用于存储其生命周期与函数调用无关的数据。程序员组织特定的内容。
(事实上??,据我所知,堆栈有自己的突发FIFO的方式,所以当本地呼叫结束时,它会被直接删除,然后被删除的其他操作。
动态存储是现有存储器所需的内存大小,后者被传递给创建者进行处理。
6)
各种分配方法。
可以静态或动态分配堆栈。
静态分配由编译器完成,例如局部变量赋值。
动态分配在堆栈中应用动态分配,并在其耗尽时自动释放。
只能手动分配和释放堆。
(堆类似于OC MRC,OC ARC是Apple处理的MRC。)
本文的()部分旨在帮助理解,而不是正确的答案。
如果你想深入挖掘。
建议参考两本教科书“计算机原理”和“数据结构”


上一篇:代码堆栈企业版
下一篇:没有了