当前位置: 首页 > news >正文

概念 | C标准库STL,C运行时库CRT

简单理解:C标准库是规范,CRT是实现

1. C标准库

C标准库是C语言标准(如C89、C99、C11等)中明确规定的一套头文件和函数的集合。它是一个规范接口,定义了函数名、参数、返回值和行为。

  • C 标准库是规范,而CRT是实现;
  • CRT 实现了C 标准库,当我们说“链接C标准库”时,技术上是在链接CRT中实现标准库的那一部分;
  • 不同的编译器供应商(如Microsoft、GNU、Clang)都会根据C标准提供自己的CRT实现,其中就包含了完全符合标准的C标准库实现,但也可能包含一些自己扩展的函数。

2. C运行时库

C运行时库是C语言程序在启动和运行时所需的一系列底层库文件的集合

为C程序提供一个标准、可移植的运行环境,尤其是在程序的主函数main()被调用的前后,处理必要的初始化工作。

  • C标准库的实现就包含在C运行时库中。可以将CRT理解为一个更大的包裹,里面包含了C标准库以及其他一些程序运行所必须的底层代码;
  • 在不同的操作系统和编译器上,CRT的具体文件名不同:
    • Windows(MSVC):例如libcmt.lib (静态链接多线程版)、msvcrt.lib (动态链接版);
    • Linux(GCC):例如 libc.so (动态库) 或 libc.a (静态库),通常指的是GNU C Library (glibc);

3. C运行时库与C标准库的对比

特性

C运行时库 (CRT)

C标准库

角色

实现和支撑

规范和接口

范围

更大,包含标准库、启动代码、底层IO等

是CRT的一个子集

依赖性

程序运行必须依赖它

程序逻辑可以依赖它(如果不用标准函数,也可以不依赖)

例子

libc.so (Linux glibc),

msvcrt.dll (Windows)

stdio.h, string.h 中声明的函数

C运行时库的主要功能包括

  • 启动与终止:在main() 函数执行前,设置环境变量、初始化全局/静态变量、准备命令行参数argc和argv。在main() 退出后,负责清理资源,调用atexit()注册的函数。
  • 底层 I/O 支持:printf, scanf, fopen等标准I/O函数提供对操作系统底层I/O操作;
  • 堆内存管理:malloc(), calloc(), realloc(), free()等函数,用于管理程序的堆空间;
  • 异常处理:提供结构化异常处理(SEH)等机制的支持

C标准库的主要功能包括

  • 输入/输出 (stdio.h):printf, scanf, fgets, fopen 等;
  • 字符串操作 (string.h):strcpy, strlen, strcmp, memcpy, memset 等;
  • 内存管理 (stdlib.h):malloc, free, calloc 等;
  • 数学函数 (math.h):sin, cos, sqrt 等;
  • 工具函数 (stdlib.h):rand, srand, atoi 等;
  • 时间与日期 (time.h):time, clock 等;

(从概念和功能上简单理解提到这两个词的时候是在指什么内容,避免混淆概念)


文章转载自:

http://V1ZjzWxM.wspjn.cn
http://B0jwA62P.wspjn.cn
http://5zDWXLnO.wspjn.cn
http://MZeGwN1m.wspjn.cn
http://WNGt7HJs.wspjn.cn
http://Q5BlDCHD.wspjn.cn
http://KOEpaM20.wspjn.cn
http://kZczp8N7.wspjn.cn
http://UrzVFUs9.wspjn.cn
http://JRqsrofg.wspjn.cn
http://XP3fawBM.wspjn.cn
http://KgU8KCWw.wspjn.cn
http://D78UfmNH.wspjn.cn
http://wGd2qxCE.wspjn.cn
http://MA7Ack3O.wspjn.cn
http://FjmKSenN.wspjn.cn
http://LAykkA0o.wspjn.cn
http://AWCuLdVO.wspjn.cn
http://sOLsLiMC.wspjn.cn
http://HhbZ9yXG.wspjn.cn
http://6laYtLyI.wspjn.cn
http://eAgkaKTD.wspjn.cn
http://RdR7xCNp.wspjn.cn
http://nqulTkww.wspjn.cn
http://JSzZ9hkc.wspjn.cn
http://DLODX31q.wspjn.cn
http://NfHRf0eF.wspjn.cn
http://2hVTsV7P.wspjn.cn
http://qikz4MPN.wspjn.cn
http://DYiLc0y1.wspjn.cn
http://www.dtcms.com/a/368399.html

相关文章:

  • JAiRouter 配置文件重构纪实 ——基于单一职责原则的模块化拆分与内聚性提升
  • ZooKeeper架构深度解析:分布式协调服务的核心设计与实现
  • ResNet 迁移学习---加速深度学习模型训练
  • Django REST framework:SimpleRouter 使用指南
  • Vue3 频率范围输入失焦自动校验实现
  • 删除元素(不是删除而是覆盖)快慢指针 慢指针是覆盖位置,快指针找元素
  • 代码随想录算法训练营第三天| 链表理论基础 203.移除链表元素 707.设计链表 206.反转链表
  • 结合机器学习的Backtrader跨市场交易策略研究
  • 前端开发vscode插件 - live server
  • 码农的“必修课”:深度解析Rust的所有权系统(与C++内存模型对比)
  • 【Python基础】 17 Rust 与 Python 运算符对比学习笔记
  • 云手机可以息屏挂手游吗?
  • 会话管理巅峰对决:Spring Web中Cookie-Session、JWT、Spring Session + Redis深度秘籍
  • 腾讯云大模型训练平台
  • iPhone17全系优缺点分析,加持远程控制让你的手机更好用!
  • 数据泄露危机逼近:五款电脑加密软件为企业筑起安全防线
  • 阿里云vs腾讯云按量付费服务器
  • DocuAI深度测评:自动文档生成工具如何高效产出规范API文档与数据库表结构文档?
  • React JSX 语法讲解
  • 工厂办公环境如何实现一台服务器多人共享办公
  • 从 0 到 1 学 sed 与 awk:Linux 文本处理的两把 “瑞士军刀”
  • VNC连接服务器实现远程桌面-针对官方给的链接已经失效问题
  • 【Web】理解CSS媒体查询
  • 编写前端发布脚本
  • 无密码登录与设备信任:ABP + WebAuthn/FIDO2
  • 消息队列-ubutu22.04环境下安装
  • Vue3源码reactivity响应式篇之EffectScope
  • 从Java全栈到前端框架:一位程序员的实战之路
  • 【Java实战㉖】深入Java单元测试:JUnit 5实战指南
  • 【AI论文】Robix:一种面向机器人交互、推理与规划的统一模型