栈是用来存储函数内部临时使用的变量(局部变量),以及函数调用时所使用的参数的内存区域;
堆是用来存储程序运行时的任意数据和对象的内存领域。
- 栈和堆的相似之处在于,它们的内存空间都是在程序运行时得到申请分配的。不过,在内存的使用方法上,二者存在些许不同。栈中对数据进行存储和舍弃(清理处理)的代码,是由编译器自动生成的,因此不需要程序员的参与。使用栈的数据的内存空间,每当函数被调用时都会得到申请分配,并在函数处理完毕后自动释放。与此相对,堆的内存空间,则要根据程序员编写的程序,来明确进行申请分配或释放。
如果没有在程序中明确释放堆的内存空间,那么即使在处理完毕后,该内存空间仍会一直残留.这个现象称为内存泄露。
栈和堆
原文:https://www.cnblogs.com/jiaqiang/p/10284362.html