如何在内存中保存从流读取的未知长度数据?
读取未知长度流数据到内存的实现方案
我之前曾提出过相关问题,经反馈思路有误,现明确核心问题:从流中读取数据时,若无法提前知晓字节数量,该如何将这些数据保存到内存中供后续使用?
我构思的几种实现方案:
- 使用
mmap分配一块无冲突内存区域,必要时额外调用mmap扩容(缺点:内存管理逻辑较为繁琐) - 实现缓冲区链表结构,填满一个缓冲区后再分配下一个缓冲区(自行编写API的话,管理难度相对较低)
- 在栈上分配一个指向缓冲区的指针数组(例如设置100个元素,每个缓冲区用
malloc分配),假设读取的数据量不超过100*缓冲区大小(实现最简单,但鲁棒性最差)
我之前提出但被强烈否决的方案:
- 用
sbrk和brk实现自定义连续堆(可能会与malloc及所有依赖malloc的代码冲突——不过我个人并不在意,因为我的应用仅使用unistd中的API,且这是一个学习项目)
针对“读取并保存未知长度数据到内存”这一特定场景,是否存在标准实现方法或专门的函数可以直接解决该问题?
内容的提问来源于stack exchange,提问作者user129393192
相关产品推荐
相关产品推荐

