Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从字符串读取大小后分配大小为'n‘的缓冲区

从字符串读取大小后分配大小为'n‘的缓冲区
EN

Stack Overflow用户
提问于 2019-01-03 10:12:41
回答 1查看 110关注 0票数 0

我在研究USB通讯。在这里,每次来自主机的数据大小都不同。为了避免来自主机的这种情况,它将在发送数据之前发送数据的大小,所以我需要分配主机发送的缓冲区大小。

来自主机的数据是" 5“这是一个字符串,我需要分配一个大小为5的缓冲区。例如: rec_buff5。从主机读取大小后。

每次大小变化时,我如何使用C代码片段来实现这一点。我不知道该怎么做。我以前在java上工作,我是C语言的新手。

我需要在不使用动态内存分配的情况下这样做。

任何帮助都将提前appreciated.Thanks。

EN

回答 1

Stack Overflow用户

发布于 2019-01-03 11:00:06

我假设您不希望使用可变大小的块进行内存分配,因为您不希望内存碎片。然后,您要查找的是内存池(固定块大小)或固定大小的数组(在.bss部分中预先分配的数组)。

您可以查看一下API for memory pool in Zephyr RTOS的外观,并检查源代码以了解实现细节。还有question about implementing own memory pool

这个系统的一个重要方面是处理当输入超过缓冲区中最大可用空间时发生的情况。例如,您可以实现某种类型的状态机,并在块中解析输入或简单地中止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54020172

复制
相关文章
数组大小分配(动态内存分配)
在很多情况下,我们无法确定要使用多大的数组。一般申请大于估计数目的固定大小,这样程序在运行时就申请了固定的大小,你觉得数组定义足够大,但是如果某种原因,数组的个数增大或减小,你又必须重新修改程序,扩大数组的存储范围。这种分配固定大小内存分配的方法称为静态内存分配。但是这种分配方法存在比较严重的缺陷,特别是处理某些问题时,在大多数情况下会浪费大量的内存空间;在少数情况下,当申请的数组不够大时,可能引起下标越界错误,甚至导致严重的后果。 为了解决这个问题,提出了动态内存分配。所谓动态内存分配是指在程序执行的过程中动态地分配或者回收存储空间的内存分配方法。动态分配不像数组等静态内存分配方法需要预先申请内存空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。从以上动、静态内存分配比较可以知道动态内存分配相对于静态内存分配的特点:
海盗船长
2020/08/27
2.6K0
设置SecureCRT会话的缓冲区大小
注意,这样只是配置了单个会话的缓冲区,可以通过 选项—>全局选项 来修改所有会话的缓冲区大小。
用户8704835
2021/06/08
2K0
寻找大小为n的数组中出现次数超过n/2的那个数
       问题描述: 在一个大小为n的数组中,其中有一个数出现的次数超过n/2,求出这个数。这题看似很简单,但是找到最优解不容易,一般情况我们首先想到最笨的方法,每选一个数,遍历一次数组,复杂度O(N^2),或者先排序再找那个数,复杂度一般为O(NlgN),或者用hash,时间复杂度O(N),空间复杂度需要看输入的数据规模,空间复杂度O(N)。所以这些都不是最优解,我们先分析一下这个题目,设该数出现的次数为x,则x满足,n/2+1<= x <=n;所以我们可以想到如果该数和其余的数全部相抵消的话,至少还剩1个,我们从前往后遍历,设key为第一个数,key出现的次数为ntime,初始化为1,代表key出现了一次,从前往后,如果某个数不等于key,则他俩抵消,key的出现次数减一,如果等于key,则key的出现次数加1,如果key的出现次数变成了0,则说明key已经用完了,所以需要重新初始化key为另一个数,再重复以上步骤,因为一定有一个数大于n/2,所以遍历到最后剩下的那个数,就是要求的数。
用户4415180
2022/06/23
5810
忽略大小写比较字符串大小
一般我们用 strcmpstrcmp 可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按 ASCII 码值大小比较),直到出现不同的字符或遇到 \0 为止。
莫浅子
2022/11/18
1.2K0
【Android 高性能音频】AAudio 缓冲区控制 ( XRun | 欠载 UnderRun | 超限 OverRun | 获取缓冲区大小 | 设置缓冲区大小 )
每帧采样数 : 该值就是通道数 , 如果是单声道 , 每帧只有一个采样 , 如果是 双声道立体声 , 每帧有 2 个采样 ;
韩曙亮
2023/03/27
1.8K0
为什么 HashMap 的容量大小要设置为2的N次方?
我给他说,你这样实例化 Map 对象不好用,他不服气。我说小朋友:如果想指定 HashMap 对象的容量得用2的N次方 。假如不是2的N次方那么在第一次put 元素的时候也会自动把容量设置为比传入参数大的最小的2的N次方,并不是你指定的这个值。他说你这也没用。我说,我这个有用,这样才能充分利用分配的内存空间,减少哈希碰撞次数。他非和我试试,我说可以,咱们先来看看源码。
壹言
2020/12/20
1.4K0
为什么 HashMap 的容量大小要设置为2的N次方?
Python字符串大小比较
这个问题对于有编程经验的人来说,是个非常简单的问题; 但是对于初学者来说,可能是个头疼的问题,所以以此记录一下。
全栈程序员站长
2022/06/25
1.6K0
大小文件读取并分页展示
1.读取小文件,并进行分页   商品|价格   飞机|1000   大炮|2000   迫击炮|1000   手枪|123   ..... lis = [] n = 10 #每页显示10条信息 with open('小文件',mode='r',encoding='utf-8')as f: content = f.readlines() for line in content: line_str = " ".join(line.strip().split('|')) #
py3study
2020/01/16
1.1K0
flash读取XML 背景自动适应大小
var bg = new Object(); bg.bgdoc_xml = new XML(); bg.parse_XML = function() {     function displayXML() {         if (bg.bgdoc_xml == undefined) {             trace("..undefined");         }         if (bg.bgdoc_xml.loaded == false) {             trace("loa
用户1172164
2018/01/16
7260
JavaScript比较字符串大小
如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。
WindCoder
2018/09/20
4.2K0
Go减小编译后的文件大小
编译优化 编译参数 go build 编译程序时可以通过 -ldflags 来指定编译参数。 go build -ldflags &quot;-s -w&quot; > -s 的作用是去掉符号信息。 -w 的作用是去掉调试信息。 可减少50%左右的大小 UPX 压缩 安装 UPX,并使用 &#x6700;&#x9AD8;&#x7EA7;&#x522B;&#x7684;&#x538B;&#x7F29; 下载地址:https://github.com/upx/upx/releases 执行命令:upx -9
孤鸿
2022/10/04
1.2K0
pdo_oci错误计算缓冲区大小的patch
pdo_oci已经很久没人更新了,有个bug存在很久了也一直没有修复。上次遇到了这个问题,老大发我了一个patch,这次又用到了,就顺手记下来。 报错信息 column XXX data was too large for buffer and was truncated to fit it in XXX 其问题是在计算变长字符集编码长度时计算不准确,导致缓冲区大小申请出错。修改pdo_oci源码解决。 oci_statement.c  532行: col->maxlen = data_size; 修改为:
码农二狗
2018/06/29
8290
【Python】数据容器总结 ② ( 数据容器元素排序 | 字符串大小比较 | 字符大小比较 | 长短一样的字符串大小比较 | 长短不一样的字符串大小比较 )
上述两个参数 , 第一个 数据容器变量 参数 , 是必须要写的 , 第二个 布尔类型 参数 是可选的 , 默认情况下参数为 reverse=False ;
韩曙亮
2023/10/11
1860
【Python】数据容器总结 ② ( 数据容器元素排序 | 字符串大小比较 | 字符大小比较 | 长短一样的字符串大小比较 | 长短不一样的字符串大小比较 )
2021-07-31:给定数组father,大小为N,表示一共有N个节
2021-07-31:给定数组father,大小为N,表示一共有N个节点,fatheri = j 表示点i的父亲是点j, father表示的树一定是一棵树而不是森林,给定数组values,大小为N,valuesi=v表示节点i的权值是v。实现如下4个方法,保证4个方法都很快!1)让某个子树所有节点值加上v,入参:int head, int v;2)查询某个子树所有节点值的累加和,入参:int head;3)在树上从a到b的整条链上所有加上v,入参:int a, int b, int v;4)查询在树上从a到b的整条链上所有节点值的累加和,入参:int a, int b。
福大大架构师每日一题
2021/07/31
2500
2021-08-25:给定数组father大小为N,表示一共有N个节点
2021-08-25:给定数组father大小为N,表示一共有N个节点,fatheri = j 表示点i的父亲是点j, father表示的树一定是一棵树而不是森林,queries是二维数组,大小为M*2,每一个长度为2的数组都表示一条查询,4,9, 表示想查询4和9之间的最低公共祖先…,3,7, 表示想查询3和7之间的最低公共祖先…,tree和queries里面的所有值,都一定在0~N-1之间。返回一个数组ans,大小为M,ansi表示第i条查询的答案。
福大大架构师每日一题
2021/08/25
2660
2021-08-25:给定数组father大小为N,表示一共有N个节点
python字符串比较大小
字符串按位比较,两个字符串第一位字符的ascii码谁大,字符串就大,不再比较后面的;第一个字符相同就比第二个字符串,以此类推,需要注意的是空格的ascii码是32,空(null)的ascii码是0 https://zhidao.baidu.com/question/558202137825309252.htmlord 函数接受一个字符
用户7886150
2021/01/19
1.4K0
Python字符串的大小写(二)
文章链接: https://icodeq.com/2021/28d6866714c1/
Zkeq
2022/05/18
5990
偏移量、客户区大小、视口大小、滚动大小、确定元素大小
1、偏移量 先讲几个偏移量属性: offsetHeight:元素在垂直方向上占用的空间大小;相当于border-top+padding-top+height+padding-bottom+border-bottom offsetWidth:元素在水平方向上占有的空间大小;相当于botder-left+padding-left+width+padding-right+border+right offsetLeft:元素的左外边框至包含元素的左内边框之间的像素距离。 offsetTop:元素的上外边框至包含元素的上内边框之间的像素距离。
Ewall
2018/09/04
1.5K0
Netty入门之消息边界处理以及ByteBuffer大小分配
以上三篇内容主要讲了NIO的三大组件、ByteBuffer、文件编程、阻塞、非阻塞、 Selector等,需要了解像详情的请移步查看。
@派大星
2023/06/28
2390
Netty入门之消息边界处理以及ByteBuffer大小分配
点击加载更多

相似问题

了解“大小为n的无效读取”

11

Fortran分配大小为从文件中读取的数组

10

内存管理/不能分配大小为n Mb的向量

911

读取Windows缓冲区大小

23

缓冲区是否从共享堆中为大小为64 KB的进程分配?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文