****在C++中,内存管理是一件十分让人畏惧的事,要考虑的方面和情况很多,我认为关键的一点是要知道你的这个内存是属于什么分区中。在C++中程序在运行过程中分为:栈,堆,常量数据区,自由存储区,全局/静态存储区,这些区的管理还是有些区别的。
栈中
分配的变量主要是:参数,函数内定义的局部变量,由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。****
堆:
主要是用new操作符来定义的申请的内存空间,不是在编译器来管理分配,而是有程序自身来管理申请与销毁。通常是用delete来删除释放内存空间。
常量数据区:
**存放程序定义的一些常量。**常量在理论上是不让改变的。
自由存储区:
就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
全局/静态存储区:
存放全局变量及定义的静态变量。