文章目录
三种对象的分类
三种对象:
- 全局对象在程序启动时分配,在程序结束时销毁。
- 局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时销毁。
- 局部static对象在第一次使用前分配,在程序结束时销毁。
三种内存的区别
- 静态存储区:主要存放static静态变量、全局变量、常量。这些数据内存在编译的时候就已经为他们分配好了内存,生命周期是整个程序从运行到结束。
- 栈区:存放局部变量。在执行函数的时候(包括main这样的函数),函数内的局部变量的存储单元会在栈上创建,函数执行完自动释放,生命周期是从该函数的开始执行到结束。线性结构。
- 堆区:程序员自己申请的任意大小的内存。一直存在直到被释放。链表结构。
前两种内存中的将对象由编译器自动创建和销毁。堆也被称作自由空间,被用来存储动态分配的对象(程序运行时分配的对象),动态对象的生存期由程序来控制——当动态对象不被使用时,必须显式地消灭他们。
动态内存
概念
为什么要使用动态内存:
- 程序不知道自己需要使用多少对象
- 程序不知道所需对象的准确类型
- 程序需要在多个对象间共享数据
动态内存的分配与释放通过一对运算符来完成:
- new