前言
C语言的内存布局对于理解C语言类型的作用域和声明周期,以及C语言对操作系统资源的使用规则至关重要,因此,理解C语言的内存布局模型,有助于深入理解C语言编程思想,以及高屋建瓴的学习C++内存布局模型。
但实际上,C语言的内存布局,要比我们想象中的复杂,根据不同的阶段有不同的分布,但作为一个程序员,我们仅关心在C语言编译和运行时内存的分布和管理,对于更底层的知识点,暂且不做梳理(其实更重要)。
本文是对C语言内存布局的学习总结,C++的对象内存模型会有所不同,但是对于内置数据类型,C和C++是完全一样的。看了许多大神的帖子(参考链接中已列出),写的都很不错,我做了一下归纳和总结,可能会有不严谨的地方,还请各位大佬不吝赐教。
C语言内存布局
我们知道,C语言从源代码到可执行程序,大约需要编译->汇编->链接三个阶段。按照这个阶段划分,C语言的内存管理,可以分为静态区域和动态区域。