C++的内存模型
C++内存模型学习笔记
以《C++ Primer Plus》第九章为准
编译过程
C/C++、C#等都是高级语言,要在机器上运行还需要翻译成机器语言,这一过程称为编译
编译经过四大过程:
- 预编译 把头文件的函数声明拷贝到源文件 创建一个.i/.ii文件
- 编译 语法分析,符号汇总
- 汇编 生成函数名到函数地址的映射。便于之后函数定位 创建.obj目标文件
- 链接 将多个文件的符号表汇总合并 将目标文件、库代码、启动代码合并
内存模型
C++没有明确的内存模型,但通常可以按如下内容理解。
C++内存有四个部分:
- 代码段 存储程序的执行代码
- 数据段 存储全局变量、静态变量、常量
- 堆内存 用于存储在程序运行时使用new或malloc申请的动态内存,需要程序员手动delete或free。
- 栈内存 用于存储局部变量和函数调用信息。栈内存分配和释放是由编译器自动管理的,一旦函数调用结束,这部分内存将被释放。
C++11的内容(并行、锁等)
还没学到
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Derek's Blog!

