在我的项目中,我需要在eeprom中保留各种记录,但我还需要搜索(按地址),删除和编辑这些记录。记录如下所示:
[n bytes address1][data1][data2][data3]
[n bytes address2][data1][data2]
[n bytes address3][data1][data2][data3][data4][data5][data6]我担心如果我只是删除一些记录,那么内存将非常零碎(因为每条记录都有不同长度的数据)。
这项任务的最佳解决方案是什么?
我和avr atxmega一起工作。
发布于 2017-01-16 21:33:23
如果您实现“最佳匹配”算法(理想情况下,完全)重用“洞”而不是“首次匹配”(然后您将牺牲速度来换取效率),那么内存碎片的问题就会小得多。如果您的数据具有一定的粒度(似乎就是这种情况),您可以非常高效地工作。
使用链接的空闲列表组织EEPROM中的空白区域,并确保在整个空闲列表中搜索您想要存储的数据完全适合的区域,或者在某个可接受的开销范围内。如果找不到这样的区域,请使用最大的空闲区域。这会严重减少碎片(如果不能避免,取决于您的数据)。
https://stackoverflow.com/questions/41676984
复制相似问题