3
在文件的开头写一些您仅在结尾知道的内容
背景:我正在编写微控制器C代码来编写EBML文件。EBML就像是带有嵌套元素的二进制XML,但是不是开始和结束标签,而是一个开始ID,长度和数据。我将其写入低功耗应用程序的外部Flash中,因此我希望将Flash的访问量降至最低。内存也很有限,因为没有一件事情容易。 当我可以将整个EBML元素保留在内存中时,生成它很容易,因为在知道长度之后,我可以返回并填写每个元素的长度。问题是当我无法将整个元素保存在内存中时该怎么办。我看到的选项是: 写出我所知道的内容,然后返回并添加长度(最简单,但是添加的闪存访问量比我想要的更多) 在开始编写每个元素之前,先计算它们的长度(相对容易,但是需要很多处理器时间) 一旦我的内存填满,就切换模式,这样我就可以继续浏览数据,但是仅是为了计算已经在内存中保留的元素的长度。然后写出内存中的内容,然后返回并继续从上次中断的地方处理数据。(到目前为止,我最喜欢的选项) 在需要编写元素且最终长度未知时,为它们提供最大或最坏情况的长度。(比上面更容易,但可能适得其反并浪费空间) 问题:看来这应该是人们思考过的相对普遍的问题。我知道在形成一些数据包时也会发生这种情况。我在这里缺少更好/更常见/更容易接受的技术吗?还是我可以搜索的一些术语?