堆和栈的区别:

2024-11-22 16:53:25
推荐回答(1个)
回答1:

  • 栈区(Stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,内存的分配是连续的,类似于数据结构中的栈。即,所分配的内存是在一块连续的内存区域内.当我们声明变量时,那么编译器会自动接着当前栈区的结尾来分配内存

  • 堆区(Heap):一般由程序员分配释放, 若程序员不释放,程序结束时可能由操作系统回收.类似于链表,在内存中的分布不是连续的,它们是不同区域的内存块通过指针链接起来的.一旦某一节点从链中断开,我们要人为的把所断开的节点从内存中释放