CRT(C Runtime Library)—— C/C++运行时库
C runtime library(part of the C standard library)
任何一个 C 程序,它的背后都有一套庞大的代码来进行支撑,使得该程序得以运行在更高级别上,而不必担心同计算机底层操作的细节,这套代码至少包括:
- 入口函数(Linux,_start)
- 入口函数所依赖的函数构成的函数集合(平台系统相关);
- 各种标准库函数的实现;
这样的一套代码即称为运行时库(Runtime Library),C 语言的运行库,即被称为 C 运行库(C Runtime library,CRT)。一般来说,CRT 函数就是标准的 C 语言函数。例如,printf、scanf、strlen、fopen 等函数就属于 CRT 函数。
linux、windows 的 CRT 源码:
- visual studio,windows 下的 C/C++ IDE,在 VC\crt\src 里便可找到一份 C 语言运行库的源代码。
- linux,libc
0. CRT 的基本构成
- 启动与退出:包括入口函数及入口函数所依赖的其他函数;
- 标准函数:由 C 语言标准规定的 C 语言标准库所应当具备的函数实现;
- I/O:I/O 功能的封装与实现
- 堆:堆的封装与实现
- 语言实现:
1. windows 下的 CRT 函数
在 windows 下所有的 CRT 函数最终都是转化成为 win32 API 来执行的。
windows 本身并没有在内核之上提供对 CRT 的支持。 CRT 既可以通过静态连接来实现,也可以通过动态链接来实现(MSVCRT.DLL)。常用的安全 CRT 函数常用的安全 CRT 函数安全 CRT(C Runtime Library = C 运行时间库)函数,是微软公司对 C/C++ 语言的扩展。
它在原来函数名后添加了“_s”后缀;一般返回出错代码;并将原来的函数返回值,作为一个参数,添加到函数输入参数列表的最后;对带缓冲区参数的函数,还添加了表示缓冲区大小的输入参数,以防止内存溢出。
warning C4996: ‘fopen’: This function or variable may be unsafe.(_CRT_SECURE_NO_WARNINGS)
CRT(C Runtime Library)—— C/C++运行时库的更多相关文章
- CRT (C run-time library)
一 产生 运行时库是程序在运行时所需要的库文件,通常以LIB或DLL形式提供. C运行时库就是C run-time library,诞生于20世纪70年代,是C而非C++语言世界的概念,C程序运行时需 ...
- visual studio运行时库MT、MTd、MD、MDd的研究(转载)
转载:http://blog.csdn.net/ybxuwei/article/details/9095067 转载:http://blog.sina.com.cn/s/blog_624485f701 ...
- vs发布的程序不依赖运行时库msvcp100.dll
[摘要:msvcr100.dll:MS Visual C Runtime 100 msvcp100.dll:MS Visual CPp 100 vs建立的工程,运转时库的范例有MD(MDd)战MT ...
- [转]C和C++运行时库
转自csdn原文:https://blog.csdn.net/ithzhang/article/details/20160009 图片请去原文查看 在使用VC构建项目时,经常会遇到下面的链接错误: 初 ...
- Qt532.【转】Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt
ZC:具体应该设置 什么参数,可以参看 自己转载的文章:"VC.[转]采用_beginthread__beginthreadex函数创建多线程 - CppSkill - 博客园.html&q ...
- visual studio运行时库MT、MTd、MD、MDd的研究
在开发window程序是经常会遇到编译好好的程序拿到另一台机器上面无法运行的情况,这一般是由于另一台机器上面没有安装响应的运行时库导致的,那么这个与编译选项MT.MTd.MD.MDd有什么关系呢?这是 ...
- 【转】Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt
http://blog.csdn.net/caoshangpa/article/details/51416077 一.在pro中设置运行时库 最近在用Qt5.6.0(VS2013版本)调用一份用Vis ...
- C运行时库
原文地址:http://blog.csdn.net/wqvbjhc/article/details/6612099 在开发window程序是经常会遇到编译好好的程序拿到另一台机器上面无法运行的情况,这 ...
- c运行时库,c标准库,Windows系统api的关系
原文地址:http://blog.csdn.net/seastars_sh/article/details/8233324 C运行库和C标准库的关系 C标准库,顾名思义既然是标准,就是由标准组织制定的 ...
随机推荐
- Zabbix监控Tomcat,Redis
一 Tomcat监控 1.1.1 Tomcat 端配置 JMX 编辑catalina.sh文件,配置如下: CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.m ...
- 提高IIS的FTP安全性 管理员的九阴真经
提高IIS的FTP安全性 管理员的九阴真经 <九阴真经>是很多武林高手蒙昧以求的武林秘籍,在系统管理员这个武林中也有很多类似<九阴真经>一样的秘籍.在这里就向大家介绍一下有关提 ...
- js中event事件处理
1. HTML事件 直接添加到HTML结构中 function show() { alert('hello'); } <body> <button id="btn&quo ...
- 【hdu 6181】Two Paths
[链接]http://acm.hdu.edu.cn/showproblem.php?pid=6181 [题意] 让你求从1到n的次短路 [题解] 模板题; 因为点可以重复走; 则一定会有次短路. di ...
- MYSQLMANAGER实例管理器总结
好久没有写文章了,今天来看看MYSQL的实例管理器(MYSQLMANAGER).一.简单介绍:1.MySQL实例管理器(IM)是通过TCP/IP端口运行的后台程序,用来监视和管理MySQL数据库服务器 ...
- hysbz 2243 染色(树链剖分)
题目链接:hysbz 2243 染色 题目大意:略. 解题思路:树链剖分+线段树的区间合并,可是区间合并比較简单,节点仅仅要记录左右端点的颜色就可以. #include <cstdio> ...
- eclipse-12.04无图标,无法固定到侧边栏
今天下载了adt-bundle,但是eclipse打开以后,侧边栏显示的是一个问好,而且没办法固定到侧边栏,导致每次打开eclipse都要进入到相应目录,很麻烦.我们可以通过如下方法设置eclipse ...
- AsyncCallback BeginInvode endinvode 异步调用
下面是搜藏的代码: //首先准备好,要进行C#异步调用的方法(能C#异步调用的,最好不多线程) private string MethodName(int Num, out int Num2) { N ...
- [RxJS] Avoid mulit post requests by using shareReplay()
With the shareReplay operator in place, we would no longer fall into the situation where we have acc ...
- OC内存管理总结,清晰明了!
<span style="font-size:18px;">OC内存管理 一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限.所以每一个APP所占的 ...