在 C++ 开发中,“零拷贝”(Zero-Copy)是一个非常重要的高性能优化概念。它通常包含两个层面的含义:一是操作系统层面(避免数据在内核空间和用户空间之间,或者内核空间内部的无谓拷贝);二是C++ 语言及应用层面(避免数据在用户空间的内存中发生多次拷贝)。以下是 C++ 开发中常见的零拷贝操作和技术手段:一、 操作系统内核级别的零拷贝 (系统调用)这类零拷贝主要用于网络编程、文件读写和高并发服务器中,目的是减少 CPU 参与数据拷贝的次数以及上下文切换。在 C++ 中通常通过调用 POSIX 接口实现。1.mmap(内存映射)原理:将磁盘文件直接映射到用户空间的虚拟内存中。用户对这块内存的读写,直接对应内核 Page Cache 的读写。优势:相比于传统的read(),它避免了将数据从内核态缓冲区拷贝到用户态缓冲区的过程。常见组合:mmap()+write()常用于将文件内容发送到网络。2.sendfile原理:专门为“将文件数据发送到网络套接字”设计的系统调用。数据直接从文件系统(Page Cache)