程序编程过程中,可以简单将内存分为三部分:静态内存区、堆、栈。
不同的变量及对象有着不同的生命周期。
静态区:保存程序的全局对象、变量(任何函数之外的变量)和statci对象及变量。它们在程序启动时分配,在程序结束时销毁。
栈内存:保存局部变量,栈(stack)的内容只在函数内部范围存在,当函数结束运行,这些内容由编译器自动销毁。
堆:堆(heap)也称为程序的内存池,这部分内容为自由空间,程序用堆来存储动态分配的对象,堆里对象的生命周期由程序来控制,动态对象不使用时,代码必须显式地销毁。
堆由malloc 系列函数或new 操作符分配的内存。其生命周期由free 或delete决定。在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但容易出错。