我之前以为堆栈就是一个名词,现在听别人说才知道,堆是堆,栈是栈,是不一样的!那么,这两者有神马区别啊??怎么用??

上传的附件
你的回答被采纳后将获得: 8点积分 (将会扣除手续费1点积分。)

keyboard_arrow_left上一篇 : 面向过程编程和面向对象编程怎么理解? 你知道《WINDOWS黑客编程技术详解》这本书吗 : 下一篇keyboard_arrow_right

2个回答

Foooooooood
2019-01-08 08:47:05

  • 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等

  • 栈是向低地址扩展的数据结构,是一块连续的内存的区域。是栈顶的地址和栈的最大容量是系统预先规定好的,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数 )

  • 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收

  • 堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存

Carewho
2019-03-27 09:59:42

局部变量存储在栈里,全局变量存储在堆里

精彩评论

eject