C语言的学习
参加新职课课程后,在完成每日一练以及做任务卡的过程中,遇到了很多的问题,通过写技术博客,整理遇到过的一些问题。
内存四区
首先,我们得知道C语言程序内存分配的过程:操作系统将硬盘中的数据下载到内存,并将内存划分成四个区域,由操作系统找到main入口开始执行程序。
而这四个区域,就是我们要说的内存四区——栈区、堆区、数据区、代码区。
当C程序运行时,便从操作系统得到一块内存空间,但这块空间怎么分配与管理,是我们要说的重点。类比个人的房间,毫无规则的摆放你的物品将会一团糟,显然我们需要有某种规则以便有条理的摆放与管理你的物品。对C语言而言,这个某种规则便是C语言内存管理机制。
一、堆区stack
malloc, calloc, realloc等函数,一般由程序员分配释放(动态内存申请与释放),若程序员不释放,程序结束时可能由操作系统回收
二、栈区heap
由编译器自动分配和释放,存放函数的参数值,局部变量等临时的值
三、全局区(静态区)static
用于存放全局变量和静态变量,全局变量和静态变量分为初始化和未初始化,初始化过的放在一个区域,未初始化的存放在相邻的另一个区域,该区域在程序结束后由操作系统释放。
四、代码区
用来存放程序执行代码的一块内存区域。这部分区域的代码属于只读。
这是我在遇到这些问题时,将自己找到的解答通过自己的理解进行整理,肯定会有不足之处,如果有错误的地方,希望不吝赐教。