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++运行时库相关推荐

  1. CRT (C run-time library)简介

    来自 https://mp.weixin.qq.com/s/qg1mFzMEYv7GDDM72H1DOQ  操作系统学习 1. 什么是CRT crt是C run-time library的简称,称为C ...

  2. crt 运行时库dll跨模块传递crt对象,出现的崩溃问题

    参考链接: https://blog.csdn.net/weixin_30653097/article/details/96512399 (讲述了,运行时库在启动的时候在exe或dll入口点之前就使用 ...

  3. C++堆被破坏 运行时库

    每个进程都有一个默认堆,在进程初始化的时候会创建这个默认堆,可以通过GetProcessHeap()获取默认堆的句柄.使用CRT时,也会有一个CRT堆,VS项目属性 ~ C/C++ ~ 代码生成 ~ ...

  4. 什么是c/c++运行时库

    什么是c/c++运行时库 在各个版本的编译器中,我们可以通过配置选项来设置程序使用的C和C++运行时库的类型.如下图(其他版本编译器大同小异): MT选项:链接LIB版的C和C++运行库.在链接时就会 ...

  5. 如何在VS2005下生成动态运行时库

    如果我们的工程采用的是动态链接MFC库,那我们的程序如果拷贝到一个没有转VC的电脑中,我们的程序要想正确运行,除了拷贝程序外,还要将运行时库拷贝过去,下面记录下如何创建动态运行时库: file-> ...

  6. 近距离端详Android ART运行时库

    Table of Contents 在最新的Google I/O大会上,Google 发布了关于Android上最新的运行时库的情况.这就是Android RunTime (ART). ART 将会取 ...

  7. linux安装gcc运行时库,Linux安装gcc-6.1.0

    获取gcc源码包 # wget https://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2 # tar -jxvf gcc-6.1.0.tar.bz ...

  8. visual studio运行时库MT、MTd、MD、MDd 的区别

    msdn上面的解释: MT:mutithread,多线程库,编译器会从运行时库里面选择多线程静态连接库来解释程序中的代码,即连接LIBCMT.lib库 MTd:mutithread+debug,多线程 ...

  9. linux安装gcc运行时库,现在可以在CentOS 8系统下用命令安装GCC 8.3.1版本

    如果你需要在CentOS 8系统下安装GCC 8,则只需要运行相关的命令就可以了,现在安装的版本是GCC 8.3.1.如果你需要编译安装GCC源码包,则本文不适合你阅读,本文就介绍安装GCC最简单的方 ...

最新文章

  1. anconda安装及opencv配置
  2. 【数据分析+建模案例】基于所给数据集对饭店流量指标进行预测
  3. UE4学习-UE4结合vs2019混合编程
  4. .NET Core IoT 入门指南:(三)使用 I2C 进行通信
  5. 图论基础知识--最小生成树算法kruskal(克鲁斯克尔)和普里姆算法(Prim算法);最短路径算法Dijkstra(迪杰斯特拉)和Floyd(弗洛伊德)
  6. virtualbox linux 挂载u盘,Ubuntu 10.04 在Virtualbox 虚拟机上挂载U盘
  7. Mathematical operation
  8. 基于angularjs的单页面实例_【进展综述】单阶段实例分割(Single Stage Instance Segmentation)...
  9. 厉害了!为了干掉 HTTP ,Spring团队又开源 nohttp 项目!
  10. Visio2016绘制框图的基本操作方法
  11. K3C官改固件更新frp客户端
  12. Springboot集成Swagger接口测试工具
  13. 一名软件测试工程师的日常
  14. 今天吃什么随机网页_初秋应该多吃什么水果?饮食禁忌有哪些?今天燕多多跟你一起探究...
  15. 二极管IN4148和IN4007的应用区别
  16. iMeta高被引论文|西农焦硕/韦革宏等-干旱生态系统中土壤真菌与细菌群落构建的关系...
  17. 啊哈,拉个群就是私域流量,怪不得做不好运营工作
  18. 云服务器deeplearning_吴恩达deeplearning.ai将于11月6日开放第四课,主讲卷积神经网络...
  19. Python爬虫实战(3):安居客房产经纪人信息采集
  20. 亚马逊将推出VR购物应用,支持Vive Rift PSVR三大平台

热门文章

  1. 根据某一个字段查询但不是主键 sql该怎么写_为什么我使用了索引,查询还是慢?...
  2. js判断html存不存在某个属性,javascript如何判断对象是否存在某属性?
  3. linux 空信息,为什么recv()函数收到空消息?
  4. await原理 js_深入浅出node.js异步编程 及async await原理
  5. C++ 智能指针后面 . 与 -> 运算符的一点体会
  6. Django组件--cookie与session
  7. IO流(八)之InputStreamReader类与OutputStreamWriter类
  8. MySQL Innodb引擎和MyIASM引擎的区别
  9. 爬楼梯 · Climbing Stairs
  10. css关键字unset