110922 knoss-vol26-c++运行库
DESCRIPTION
{9月22日语音讲座vol.26}杨军: C++运行库理解 http://bbs.code.ijinshan.com/thread-1374-1-1.htmlTRANSCRIPT
![Page 1: 110922 knoss-vol26-c++运行库](https://reader035.vdocuments.mx/reader035/viewer/2022081716/5465e66eb4af9fdf3f8b4da3/html5/thumbnails/1.jpg)
了解 C/C++运行库
杨 军
![Page 2: 110922 knoss-vol26-c++运行库](https://reader035.vdocuments.mx/reader035/viewer/2022081716/5465e66eb4af9fdf3f8b4da3/html5/thumbnails/2.jpg)
C/C++运行库是什么
C/C++运行库的功能
如何减小软件的大小
主要分享内容
1
2
3
![Page 3: 110922 knoss-vol26-c++运行库](https://reader035.vdocuments.mx/reader035/viewer/2022081716/5465e66eb4af9fdf3f8b4da3/html5/thumbnails/3.jpg)
C/C++运行库是什么
每一个 C/C++程序,它的背后都有一套庞大的代码来进行支撑,以使得该程序能够正常运行。这套代码就是 C/C++运行库。 C/C++运行库由编绎器提供。
它主要有两个作用:实现C/C++标准库函数的和实现 C/C++语言的一些机制。
![Page 4: 110922 knoss-vol26-c++运行库](https://reader035.vdocuments.mx/reader035/viewer/2022081716/5465e66eb4af9fdf3f8b4da3/html5/thumbnails/4.jpg)
C/C++运行库的大部分代码都是在实现 C,C++标准库函数 , 如 : printf, fopen, malloc, strlen, time, _beginthreadex, std::string等。
实现 C/C++标准库函数
1. 标准库函数与Windows API 的关系
2. 需要注意的一些函数。 a. 使用了 TLS的库函数 , 比如 _localtime64 b. _beginthreadex和 CreateThread()
3. 动态链接 (MD)与静态链接 (MT)。 a: 链接错误,大部分是因为 lib的编绎方式不一致。 b: 模块间内存释放 , 谁分配谁释放。
![Page 5: 110922 knoss-vol26-c++运行库](https://reader035.vdocuments.mx/reader035/viewer/2022081716/5465e66eb4af9fdf3f8b4da3/html5/thumbnails/5.jpg)
C/C++运行库实现了 C/C++语言自身的一些语言机制,比如main函数进入前全局变量要完成构造。静态变量的只能初始化一次,异常处理机制等。
实现 C/C++语言机制
1. 全局变量及类中静态成员变量的初始化。
3. 静态变量的初始化
2. 应用程序的入口函数。
![Page 6: 110922 knoss-vol26-c++运行库](https://reader035.vdocuments.mx/reader035/viewer/2022081716/5465e66eb4af9fdf3f8b4da3/html5/thumbnails/6.jpg)
如何减小软件的 Size
2. 模块数非常少,使用MT编绎
1. 模块数非常多,使用MD编绎
3. 使用 VC6运行库。
4. 不使用 CRT
![Page 7: 110922 knoss-vol26-c++运行库](https://reader035.vdocuments.mx/reader035/viewer/2022081716/5465e66eb4af9fdf3f8b4da3/html5/thumbnails/7.jpg)
Thank you !
推荐书籍 :
2. 《 windows核心编程》
1. 《程序员的自我修养》