c - 从字符串读取大小后分配大小为“n”的缓冲区
问题描述
我正在研究USB通信。这里每次来自主机的数据大小都不同。为避免主机出现这种情况,它将在发送数据之前发送数据大小,因此我需要分配主机发送大小的缓冲区。
来自主机的数据是“5”,它是一个字符串,我需要分配一个大小为 5 的缓冲区。例如:rec_buff [5]。从主机读取大小后。
每次大小变化时,我如何使用 C 代码片段来做到这一点。我不知道该怎么做。我曾经在java上工作,我是C的新手。
我需要在不使用动态内存分配的情况下做到这一点。
任何帮助将不胜感激。在此先感谢。
解决方案
我假设您不希望使用可变大小的块分配内存,因为您不希望内存碎片。那么您正在寻找的是一个内存池(固定块大小)或一个固定大小的数组(在.bss部分中预分配的数组)。
您可以查看Zephyr RTOS 中的内存池 API 的外观,并检查源代码以了解实现细节。还有关于实现自己的内存池的问题。
该系统的一个重要方面是处理当输入超过缓冲区中的最大可用空间时发生的情况。例如,您可以实现某种状态机并以块的形式解析输入或简单地中止。
推荐阅读
- nestjs - 在nestjs中验证DTO
- assembly - MIPS 汇编语言中的 jal 指令不保存返回地址
- laravel - Laravel groupBy 选择多个字段
- reactjs - ESLint 的 extends 属性是否被附加到 overrides 设置中的 extends 属性
- node.js - 错误:包括意外。元素必须是模型,关联......与 sequelize.literal
- php - 禁用操作所需的身份验证
- java - 如何使用地理编码器在 Onsensor 更改方法中使用用户当前坐标
- python - 在python中一次计算和生成多个标准差列但不是以固定的累积顺序
- homebrew - 返回dbt 19.1版本
- python - pdf抓取后拆分列