C/C++ 运行时库概念详解
本文介绍 C/C++ 运行时库(Runtime Library)的定义、核心功能、各平台实现形式(GNU/MSVC/LLVM 等),以及开发中常遇到的多实例、多版本问题与注意事项。适合 C/C++ 开发、跨平台构建与排障的读者。
一、什么是运行时库
运行时库(Runtime Library) 是程序运行时依赖的基础库,为 C/C++ 的语法与标准库提供底层支持,由编译器厂商提供并随编译器一起发布,编译链接时由编译器自动链接进程序。
| 要点 | 说明 |
|---|---|
| 定义 | 程序运行时依赖的基础库,为语言语法与标准库提供支持 |
| 类比 | 类似 Java 的 JRE(JVM + 标准库)、Python 的解释器 + 标准库,是语言运行所依赖的底层环境 |
| 提供方 | 由编译器厂商实现,不同编译器(如 MSVC、GCC、Clang)的实现各不相同 |
支撑程序运行
CPU / 内存等硬件
操作系统
C/C++ 运行时库
C/C++ 程序
与其他语言对比:
| 语言 | 运行时库 / 环境 |
|---|---|
| Java | JRE(JVM + Java 标准库) |
| Python | Python 解释器 + Python 标准库 |
| JavaScript | 浏览器或 Node 中的 JS 引擎 + 标准库 |
| C/C++ | CRT + C++ 标准库实现(随编译器提供) |
二、核心功能概览
C/C++ 运行时库的主要职责可归纳为以下几类:
| 功能 | 说明 |
|---|---|
| 程序启停管理 | 在 main 执行前初始化全局变量、堆、I/O、环境变量与命令行参数;在 main 结束后做资源清理 |
| 封装平台 API | 将 malloc/free、fopen/fread 等跨平台标准函数封装为统一接口,底层调用各系统 API(如 Linux 的 brk/mmap、Windows 的 HeapAlloc/VirtualAlloc),屏蔽操作系统差异 |
| 实现标准库 | 提供 C/C++ 标准库中大部分实现:C 的 stdio、stdlib、string 等;C++ 的容器、算法、线程、智能指针、流等 |
| 支持语言特性 | 为 C++ 的异常处理(Exception)、RTTI、new/delete 等提供底层支持 |
三、C 运行时库做什么
C 语言常用函数(如 printf、malloc/free、fopen/fread、strcpy、sin 等),而是由 提供实现。

