1. fmemopen(Linux POSIX 标准)
- 功能:将内存缓冲区伪装成文件流(FILE*),支持标准文件 I/O 操作(如 fprintf、fscanf)
 - 核心机制:
- 参数:buf(预分配内存指针)、size(缓冲区大小)、mode(读写模式,如 “r+")。
 - 若 buf=NULL,则自动分配动态内存(需手动释放)。
 
 - 应用场景:
- 避免磁盘 I/O:处理内存中的数据(如解析网络报文)。
 - 兼容文件 API:第三方库仅支持 FILE* 参数时,将内存数据转为文件流。
 
 - 代码示例:
 
 |  | 
2. MemoryModule(Windows 第三方库)
- 功能:直接从内存加载 DLL(无需落盘),返回模块句柄供调用。
 - 核心机制:
- 解析内存中的 PE 文件格式,模拟系统加载器行为(重定位、导入表修复)。
 - 支持通过 MemoryGetProcAddress 获取函数指针。
 
 - 应用场景:
- 加密 DLL 运行时解密:避免恶意软件扫描磁盘文件。
 - 网络分发插件:远程下载 DLL 后直接内存加载。
 
 
对比与限制
| 特性 | fmemopen (Linux) | MemoryModule (Windows) | 
|---|---|---|
| 标准性 | POSIX 标准(非全平台支持) | 第三方库(非系统原生) | 
| 内存管理 | 需预分配缓冲区或动态分配 | 自动处理内存分配与重定位 | 
| 安全性 | 缓冲区溢出风险 | 需自行校验内存来源合法性 |