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)

    一 产生 运行时库是程序在运行时所需要的库文件,通常以LIB或DLL形式提供. C运行时库就是C run-time library,诞生于20世纪70年代,是C而非C++语言世界的概念,C程序运行时需 ...

  2. visual studio运行时库MT、MTd、MD、MDd的研究(转载)

    转载:http://blog.csdn.net/ybxuwei/article/details/9095067 转载:http://blog.sina.com.cn/s/blog_624485f701 ...

  3. vs发布的程序不依赖运行时库msvcp100.dll

      [摘要:msvcr100.dll:MS Visual C Runtime 100 msvcp100.dll:MS Visual CPp 100 vs建立的工程,运转时库的范例有MD(MDd)战MT ...

  4. [转]C和C++运行时库

    转自csdn原文:https://blog.csdn.net/ithzhang/article/details/20160009 图片请去原文查看 在使用VC构建项目时,经常会遇到下面的链接错误: 初 ...

  5. Qt532.【转】Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt

    ZC:具体应该设置 什么参数,可以参看 自己转载的文章:"VC.[转]采用_beginthread__beginthreadex函数创建多线程 - CppSkill - 博客园.html&q ...

  6. visual studio运行时库MT、MTd、MD、MDd的研究

    在开发window程序是经常会遇到编译好好的程序拿到另一台机器上面无法运行的情况,这一般是由于另一台机器上面没有安装响应的运行时库导致的,那么这个与编译选项MT.MTd.MD.MDd有什么关系呢?这是 ...

  7. 【转】Qt在pro中设置运行时库MT、MTd、MD、MDd,只适合VS版本的Qt

    http://blog.csdn.net/caoshangpa/article/details/51416077 一.在pro中设置运行时库 最近在用Qt5.6.0(VS2013版本)调用一份用Vis ...

  8. C运行时库

    原文地址:http://blog.csdn.net/wqvbjhc/article/details/6612099 在开发window程序是经常会遇到编译好好的程序拿到另一台机器上面无法运行的情况,这 ...

  9. c运行时库,c标准库,Windows系统api的关系

    原文地址:http://blog.csdn.net/seastars_sh/article/details/8233324 C运行库和C标准库的关系 C标准库,顾名思义既然是标准,就是由标准组织制定的 ...

随机推荐

  1. 【agc014d】Black and White Tree

    又是被虐的一天呢~(AC是不可能的,这辈子不可能AC的.做题又不会做,就是打打暴力,才能维持骗骗分这样子.在机房里的感觉比回家的感觉好多了!里面个个都是大佬,个个都是死宅,我超喜欢在里面的!) (↑以 ...

  2. Vue的学习--环境配置

    1.  下载vue.min.js或者使用CDN 2.  安装Vue-cli环境 我在window7 32位下使用命令行cmd进行的操作 安装之前应该使用node -v和npm -v检查一下node和n ...

  3. URL短地址压缩算法 微博短地址原理解析 (Java实现)

    原博客地址:http://blog.csdn.net/xyz_lmn/article/details/8057270 最近,项目中需要用到短网址(ShortUrl)的算法,于是在网上搜索一番,发现有C ...

  4. 洛谷——P1823 音乐会的等待

    https://www.luogu.org/problem/show?pid=1823 题目描述 N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任 ...

  5. Spring3拦截引发的问题——WEB开发中的client路径

    什么是client路径? 第一类.也就是html或js文件等client訪问的文件里的路径,这里包含一些资源文件的引入(js.css还有各种图片等),或是跳转到静态html页面,总之获取的都是静态资源 ...

  6. springMVC视图解析器——InternalResourceViewResolver(转)

    springmvc在处理器方法中通常返回的是逻辑视图,如何定位到真正的页面,就需要通过视图解析器. springmvc里提供了多个视图解析器,InternalResourceViewResolver就 ...

  7. .vsdc和.svf用于formal verification tools

    svf:Setup Verification for Formality

  8. Web应用开发(Servlet+html+Mysql)入门小示例

    在安装好eclipse并配置完安装环境.安装好tomcat的前提下: 1.新建Dynamic Web Project,选择好运行的tomcat服务器版本等:2.在WebContent下:   新建fo ...

  9. 【组件】微信小程序input搜索框的实现

    开发小程序的过程,是一个学习知识,解决问题的过程,每当实现了一个需求,总会有很大的成就感,每天记录一个开发过程中的细节.实现效果如下: 官方参考链接:https://developers.weixin ...

  10. Android通过startService播放背景音乐简单演示样例

    关于startService的基本使用概述及其生命周期可參见博客<Android中startService的使用及Service生命周期>. 本文通过播放背景音乐的简单演示样例,演示sta ...