C和C++内存分区

在C和C++编译的程序大致可以分为五个区:

1.堆区:由程序员自己分配和释放,如果程序员一直没有释放这部分内存,那么程序结束的时候会由OS回收。这里开辟空间一般是new,malloc等函数。要注意的是,像我们malloc开辟一片空间出来,同时也向里面赋值了,但是程序运行的过程我们去把这一片空间释放了,只是这一片空间被设置为可以再次被使用,里面的内容不一定会被清空为0.

2.栈区:一般由编译器自己去分配和释放,存放像局部变量,函数名等等。

3.全局/静态存储区:在程序编译阶段就开辟空间和初始化好,生命周期是整个程序运行的周期。主要存放全局变量(会自动初始化),静态变量等等。

4.字符常量区:存放字符常量,程序结束的时候释放。

5.代码区:存放函数的二进制代码。

 

如有错误,望指正。

你可能感兴趣的:(C和C++内存分区)