1.动态链接和静态链接的区别,动态链接的原理是什么?
区别:他们的最大区别就是在于链接的时机不同,静态链接是在形成可执行程序前,而动态链接的进行则是程序执行时。
静态库:就是将库中的代码包含到自己的程序之中,每个程序链接静态库后,都会包含一份独立的代码,当程序运行起来时,所有这些重复的代码都需要占用独立的存储空间,显然很浪费计算机资源。
动态库:不会将代码直接复制到自己程序中,只会留下调用接口,程序运行时再去将动态库加载到内存中,所有程序只会共享这一份动态库,因此动态库也被称为共享库。
动态链接原理:是把程序按照模块拆分成各个相对独立部分,在程序运行时才将它们链接在一起形成一个完整的程序,而不是像静态链接一样把所有程序模块都链接成一个单独的可执行文件
2.C++中怎么编译C语言代码?
使用extern“C”让C++代码按照C语言的方式去编译
3.未初始化的全局变量和初始化的全局变量放在哪里?
初始化的全局变量存放在数据段,数据段数据静态分配。
未初始化的全局变量存放在BSS(Block Started By Symbol)段,属于静态内存分配
4.说一下内联函数及其优缺点
内联函数是在编译期将函数体内嵌到程序之中,以此来节省函数调用的开销。
优点:是节省了函数调用的开销,让程序运行更加快速。
缺点:是如果函数体过长,频繁使用内联函数会导致代码编译膨胀问题。不能递归执行