使用堆栈或堆之间的区别

这个问题在这里已经有了答案:

  • 什么和堆栈和堆在哪里? 25个答案

  • 首先 - 堆和堆栈不是c++术语。 他们是实施细节。

    使用堆栈和堆的实现(可能大多数 - 如果不是全部的话)通常具有堆栈大小的上限。 因此,将大量变量放在堆栈上会导致堆栈溢出(这通常会导致不可预知的错误)。

    然而,堆栈对堆有好处,所以只要你可以使用它 - 只要你不把巨大的变量放在堆栈上。

    注意 - 大多数c ++容器,例如vector,list,deque,都可以放在堆栈上,因为它们只在堆栈上放置几个字节,并在堆上分配真正的数据容器。


    使用堆栈的主要“问题” - 由执行流程控制的变量的生命周期不由开发人员进行。 虽然在某些情况下,当变量超出范围时会自动销毁,但它更容易拥有由开发人员而不是编译器控制的数据。 另一个问题 - 在标准C ++上,您只能在编译时已知的堆栈上分配数据,而堆不是这种情况。

    链接地址: http://www.djcxy.com/p/14513.html

    上一篇: Difference between using the Stack or the Heap

    下一篇: Why memory isn't zero out from malloc?