量的值时，相应的内存会被回收并重新使用。在堆中分配的对象必须被释放掉，特别是当对象不再被需要时。在具有垃圾回收机制的语言（如C#、Java和Lisp）中，当变量出了其作用域再也不能被引用时运行环境会自动地回收对象。在不具有垃圾回收机制的语言当中，如C语言，程序（程序员）必须显式地分配内存，而且用完之后还要释放内存。如果没有这样做会造成内存泄漏，在这种情况下，程序运行过程中堆会逐渐消耗，最终因为内存耗尽而崩溃。当一个变量指向动态创建的数据结构时，可能其中一些部分只能通过变量间接的访问。在这种环境下，垃