嵌入式c面试试题收集.docVIP

  • 2
  • 0
  • 约14.23万字
  • 约 79页
  • 2017-01-02 发布于贵州
  • 举报
C++中的堆与栈 整理者:陆晓明 1 基本概念 也不知道是什么原因,很多人总是把堆和栈混合一起,在写程序时,总是经常脱口而出地说堆栈。网上的一些资料说堆栈的叫法是有历史原因的,至于具体是什么历史原因,这不是本文所要讨论的问题。 堆:在数据结构中,堆是一种满足“堆性质”(至于什么是堆性质可以查阅任何一本数据结构的书)的数据结构。然而,通常我们所指的堆都是指二叉堆,即一种使用数组来模拟完全二叉树的结构。当然,也存在其它形式的堆,包括斐波拉契堆、二项堆、杨氏表等,想获得有关这些特殊堆的性质可以查阅算法导论。然而,在编译器中,堆是一个存储区,通常用于动态分配存储空间,一般堆具有不连续性(在下文中将讲到堆的不连续性)。 栈:在数据结构中,栈是一种按照数据项先进后出的顺序排列的数据结构,我们只能在栈顶来对栈中的数据项进行操作。然而在编译器中,栈通常是用来为函数中的临时变量分配存储空间,通常栈空间的分配具有连续性。 2 相关知识 通常一个由C++编译的程序占用的内存分为以下五个部分(这些知识对理解下文至关重要,这些是对一个基本的C++程序的存储方式的认识): 1)栈区(stack) 是由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2)堆区(heap

文档评论(0)

1亿VIP精品文档

相关文档