1、makefile文件对作用
一个工程中的源文件不计其数,按照类型、功能、模块分别为放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译、哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个shell脚本一样,其中也可以执行操作系统的命令,makefile带来的好处就是自动化编译,一旦写好,只需要一个makefile命令,整个工程完全可以自动化编译,极大的提高了软件开发的效率。
2、linux进程内存空间分为哪几个段,作用分别是什么?
1、代码区(Text)
主要用于存放功能代码,函数指针指向该区域,比如函数名
2、只读常量区(Text)
存放的字符串常量和用const修饰的,并且已经初始化的全局变量和静态局部变量
3、全局区/数据区(data)
存放已经初始化的全局变量和静态局部变量(这个区的数据都有存储空间、生命周期是整个程序)
4、bss段
存放还没有初始化的全局变量和静态局部变量,bss段会在main函数执行前清零
5、堆区
主要表示使用malloc、calloc、realloc、free等用于手动申请的动态内存,需要手动释放
6、栈区
主要存放非静态局部变量(包括函数的参数),块变量,有操作系统自动处理