内存的5个区域
1、全局名字空间
2、自由存储区
3、寄存器
4、代码空间
5、栈
局部变量和函数形参位于栈中,代码位于代码区,全局变量位于全局变量区。寄存器则用于内部管理,例如保存栈顶指针和指令指针等。所有剩余的内存空间都被作为自由存储区,有时也被称为堆。
局部变量的问题在于他们的寿命是有限的,当函数返回时,局部变量就被丢弃了。全局变量解决了这个问题,代价是在整个程序过程中对他们的访问不受任何限制,这导致了代码的编制难以理解并且难以维护。把数据保存在自由存储区则可以一举解决这2个问题。
采取这种内存访问方式,而不是采用全局变量,有点在于只有使用特定指针的函数才能访问特定的数据。这样就提供了一个严格控制的数据访问接口,避免了一个函数以外地改变它不应改变的数据。
在c++使用new关键字 来实现这一点。