使用堆栈或堆之间的区别
这个问题在这里已经有了答案:
首先 - 堆和堆栈不是c++
术语。 他们是实施细节。
使用堆栈和堆的实现(可能大多数 - 如果不是全部的话)通常具有堆栈大小的上限。 因此,将大量变量放在堆栈上会导致堆栈溢出(这通常会导致不可预知的错误)。
然而,堆栈对堆有好处,所以只要你可以使用它 - 只要你不把巨大的变量放在堆栈上。
注意 - 大多数c ++容器,例如vector,list,deque,都可以放在堆栈上,因为它们只在堆栈上放置几个字节,并在堆上分配真正的数据容器。
使用堆栈的主要“问题” - 由执行流程控制的变量的生命周期不由开发人员进行。 虽然在某些情况下,当变量超出范围时会自动销毁,但它更容易拥有由开发人员而不是编译器控制的数据。 另一个问题 - 在标准C ++上,您只能在编译时已知的堆栈上分配数据,而堆不是这种情况。
链接地址: http://www.djcxy.com/p/14513.html