【发布时间】:2014-06-23 15:21:34
【问题描述】:
我正在为我的数据组织决赛而学习,并且我正在检查堆栈和堆,因为我知道它们将进入决赛并且我需要知道它们之间的差异。 我知道 Stack 是什么,Heap 是什么。
但我对什么是堆栈和什么是堆感到困惑。
堆栈是RAM中存储内存的地方,如果空间不足,就会发生堆栈溢出。对象默认存储在这里,当对象超出范围时会重新分配内存,速度更快。
堆是RAM中存储内存的地方,如果空间不足,操作系统会分配更多。对于要存储在堆上的对象,需要使用 new 运算符告诉它,并且只有在被告知时才会被释放。可能会出现碎片问题,它比堆栈慢,并且它可以更好地处理大量内存。
但是什么是栈,什么是堆呢?它是记忆的存储方式吗?比如静态数组或者静态向量是栈类型,动态数组,链表是堆类型?
谢谢大家!
【问题讨论】:
-
I know what the Stack is and what the Heap is,but I'm confused on what a stack is and what a heap is.嗯? -
“堆栈”和“堆”是通用概念。在基于 C 的语言中,“堆栈”和“堆”是特定的实体——“堆栈”是管理调用/返回、自动变量存储等的“执行堆栈”,而“堆”是您
malloc或new存储件。可以有其他(用户定义的)堆栈和堆来管理完全不同的任务。 -
不要将Abstract Data Types (ADTs) 与特定语言的特定实现概念(与 ADT 不严格相关)混淆。
-
..当然,Google 上没有这些信息。
标签: c++ stack heap heap-memory stack-memory