堆栈数据结构有什么区别,举例说明
栈(Stack)和堆(Heap)是两种不同的数据结构,它们在多个方面存在显著区别:
存储方式
- 栈:栈是一种后进先出(LIFO)的数据结构,它的存储空间是连续的。栈由系统自动分配和释放,用于存储函数调用时的局部变量、函数参数、返回地址等信息。例如,当一个函数被调用时,系统会为该函数的局部变量在栈上分配空间,当函数执行完毕返回时,这些空间会自动被释放。
#include <iostream>
void func() {
int a = 10; // a 存储在栈上
std::cout << a << std::endl;
}
int main() {
func();
return 0;
}
- 堆:堆是一种动态分配内存的数据结构,它的存储空间是不连续的。堆由程序员手动分配和释放,使用
new
和delete
(或malloc
和free
)来进行操作。