栈:
栈是一种线性数据结构,具有先进后出的特点
栈的内存分配是连续的,以固定大小(几mb)分配给每个线程
栈用于存储函数的调用信息,局部变量,函数参数以及临时数据等`
栈的操作速度比较快,因为栈的内存分配和释放都是在固定地址完成的,没有复杂的内存管理
栈的大小是有限的,当栈空间不足时会发生栈溢出(Stack Owerflow)
堆:
堆是一种动态的数据结构,用于存储程序运行时动态分配的内存
堆的内存分布是不连续的, 可以动态的分配和释放内存空间
堆用常用于存储动态分配的数组,对象,数据结构等
堆的操作相对较慢,因为堆的内存分配和释放需要进行复杂的内存管理,如内存分配算法
堆的大小一般受限于操作系统和硬件的限制,一般比栈大得多.(有钱了买台好电脑ヾ(◍°∇°◍)ノ゙)