栈空间和堆空间的区别

在程序中,数据存储在不同的区段,通常将整个数据区分为四部分:栈存储区,堆存储区,全局及静态存储区,常量存储区。

1.栈存储区主要存储函数参数和局部变量。存储数据是先进后出,由编译器负责分配和释放回收。

2.堆存储区主要存储动态分配的内存块,编译器不会自动处理,需要程序员负责分配和回收。有可能产生内存泄漏,在不断分配和释放空间的过程中,造成空间逐渐碎片化,每块可用空间都很小。

3.全局及静态存储区主要存储全局变量和静态变量。只要在程序结束时操作系统才会回收这部分空间。


猜你喜欢

转载自blog.csdn.net/lycx1234/article/details/80305797