110922 knoss-vol26-c++运行库

7
了解 C/C++ 运行

Upload: zoom-quiet

Post on 13-Nov-2014

1.016 views

Category:

Documents


0 download

DESCRIPTION

{9月22日语音讲座vol.26}杨军: C++运行库理解 http://bbs.code.ijinshan.com/thread-1374-1-1.html

TRANSCRIPT

Page 1: 110922 knoss-vol26-c++运行库

了解 C/C++运行库

杨 军

Page 2: 110922 knoss-vol26-c++运行库

C/C++运行库是什么

C/C++运行库的功能

如何减小软件的大小

主要分享内容

1

2

3

Page 3: 110922 knoss-vol26-c++运行库

C/C++运行库是什么

每一个 C/C++程序,它的背后都有一套庞大的代码来进行支撑,以使得该程序能够正常运行。这套代码就是 C/C++运行库。 C/C++运行库由编绎器提供。

它主要有两个作用:实现C/C++标准库函数的和实现 C/C++语言的一些机制。

Page 4: 110922 knoss-vol26-c++运行库

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++运行库

C/C++运行库实现了 C/C++语言自身的一些语言机制,比如main函数进入前全局变量要完成构造。静态变量的只能初始化一次,异常处理机制等。

实现 C/C++语言机制

1. 全局变量及类中静态成员变量的初始化。

3. 静态变量的初始化

2. 应用程序的入口函数。

Page 6: 110922 knoss-vol26-c++运行库

如何减小软件的 Size

2. 模块数非常少,使用MT编绎

1. 模块数非常多,使用MD编绎

3. 使用 VC6运行库。

4. 不使用 CRT

Page 7: 110922 knoss-vol26-c++运行库

Thank you !

推荐书籍 :

2. 《 windows核心编程》

1. 《程序员的自我修养》