面试经

发布时间 2023-09-14 01:02:34作者: 风中凌乱的猪头

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、栈区

    主要存放非静态局部变量(包括函数的参数),块变量,有操作系统自动处理