- 博客(4)
- 问答 (4)
- 收藏
- 关注
原创 内存池学习:使用链表实现简单高效的内存池
内存池是一种预先分配内存的技术,它将一大块连续内存划分为多个固定大小的小块,通过链表等数据结构进行管理。mallocfree是链表的节点,每个节点表示一个空闲的内存块。成员next是指向链表中下一个空闲块的指针。首先block_size是每个内存块的大小(字节)。block_count是内存块的数量,返回值是一个指向MenoryPool的指针使用malloc分配一个MemoryPool结构体,用于管理内存池的元数据(例如块大小、总块数和链表头指针)。为内存池分配连续的内存块,总大小为。
2024-11-22 00:57:19
870
原创 在单片机中申请动态内存造成内存的碎片化
通过为音频数据分配一块足够大的固定内存池,我可以直接在录音时使用这块预留内存,完全避免了多次动态申请和释放内存带来的碎片化问题。总结来看,在存储需要大块连续空间的动态数据时,内存池策略比频繁的动态分配更为高效,尤其是在ESP32这样内存资源有限且不适合复杂内存管理方案的平台上,为音频数据存储提供了更加稳定的解决方案。然而在实际运行中,我发现随着多次申请和释放操作的累积,系统内的内存出现了严重的碎片化,导致无法为录音数据分配足够大、连续的内存块。释放内存,内存碎片依然不断堆积,最终导致了程序崩溃。
2024-11-17 23:31:40
273
原创 基于ESP32开发的掌上ai对话助手
本次项目的成果实现了在小型嵌入式平台上与ai大模型进行对话,同时制作了可视化页面,能够在三个不同的页面分别显示时间日期,进行大模型的对话,英语单词的背诵。在本次项目中,由于用到了sd卡再加上本人在备战6级,故而将六级词汇放入了sd卡中,当我点击更新时将会进行单词一起其中文的更新。再发送给大模型后,一方面把获取到的回答显示在屏幕上,另一方面会将其发送给百度智能云,获取音频流数据。这段代码将会把你的音频发送至百度云进行识别然后将识别到的转为文本发送回来,最后进行拼接。开发环境ESP-IDF5.2.1。
2024-11-16 23:34:25
1991
原创 YOLO数据集训练
train 是训练集 val是验证集 test 是测试集 names是你训练的所有物体的类别名称,按照序号排列。接下来再此文件夹内创建两个文件夹分别为images和labels。把标注好的数据选择保存到刚刚创建的labels文件夹里面。首先打开文件目录下的A_my_data.yaml文件。首先创建一个文件作为存放训练数据的文件。把所需要训练的图片保存进这三个文件夹中。在这两个文件夹内分别创建三个文件夹。接着打开刚刚的文件夹把图片进行标注。接着将你的数据集路径添加进去。
2024-11-15 22:54:30
314
1
空空如也
请教各位腾讯云的接受数据格式到底是什么啊?
2023-06-18
stm32 如何才能使dht11精确到小数点后两位
2023-04-22
ad18这个情况咋解决啊
2022-11-08
这个线是啥啊,在哪啊,初学者protues
2022-10-21
用指针实现将100到200间所有素数输出到屏幕,每行10个
2021-12-21
用指针法实现选择法排序程序,输入20个整数,并用指针实现选择法升序排序
2021-12-21
vc++6.0总是出错
2021-12-17
写一个判别素数的函数在主函数输入20~100整数,要求每行输出五个素数,每个数列宽为四
2021-12-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人