程序内存分配
一个由C/C++
编译的程序占用的内存分为以下几个部分:
- 栈区:栈区由编译器自动分配和释放,存放函数的参数值,局部变量值等,操作方式类似于数据结构中的栈。
- 堆区:是由
new
非陪的内存块,由程序员释放,编译器一般不管,一般一个new
和一个delete
对应,如果程序员没有释放掉,资源将在操作系统在程序结束后自动回收。 - 自由存储区:是由
malloc
等分配的内存单元,和堆十分相似,用free
进行释放。 - 全局/静态存储区:全局变量和静态变量被分配到同一内存块中(在C语言中,全局变量又分为初始化的和未初始化的,C++中没有这一区分)。
- 常量存储区:特殊的存储区,里面存放常量,不允许被修改