我创建一个动态的内存池 51个快 每个块3个字节。
我需要对每个块进行数据的读写。比如我给每个快编号为0到50,当我需要读写某个快的时候,如何精确的找到这个快的地址?
如何进行读写操作?比如我需要读取和写入第五个快的数据,该如何找到这个快的地址?
查看更多
内存池不是这么用的。你的需求简单的搞个二维数组就行了。
假设 我已经用rt_mp_alloc 申请了10个快,现在我要对第五个快进行数据的读写 如何找到这个快的地址?
搞笑版:都一样快🐵
正式版:随着乱序的alloc/free后,新alloc出来的地址不再有序。所以mp没有第几个的概念。即使不乱序使用,mp也没提供顺序的保证,仅是能保证独享,让申请变得可控些。
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
那内存池的意义在哪里呢?数据不能写了然后就找不到放哪里了把?如果仅仅是用来申请和释放 那和信号量有啥区别。。。
官方例程里 ptr是用 1个字节的指针数组 如果是内存块的地址 应该是4个字节的把 他这个ptr的意义是什么 指的是内存块的块数?
你好像对指针不大懂
你可以试试 sizeof(uint8_t) 与 sizeof(uint8_t *)
是否相等
rt_map_alloc 就好像你用一般的malloc 都是传回指针
只不过用rt_map_alloc他是从你前面建立的内存池 mp 去配置出那一块内存
如前面有人讲了你直接配置array 就好,按照你的用途
直接宣告一个array 就可以