gpt4 book ai didi

c - 如何在 FatFs 中获得最大的空闲连续内存块

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:57 27 4
gpt4 key购买 nike

使用 FatFs 及其 API ,我正在尝试为驱动器的其余部分预分配文件系统空间以写入未知大小的文件。在文件写入过程结束时,任何未使用的空间都会被截断 (f_truncate)。但是,当文件系统在删除某些文件后变得碎片化时,我在分配足够空间时遇到了问题。为了克服这个问题,我只想分配足够的空间作为文件系统上最大的连续内存块。

在FatFS API中,有获取设备剩余空闲空间量的函数,即f_getfree。还有 f_expand 函数,它接受以字节为单位的大小,并返回是否存在该给定大小的空闲连续内存块。

是否有一种有效的方法来计算可用的最大空闲连续内存块?我试图避免任何类型的蛮力“猜测和检查”方法。谢谢

最佳答案

一种方法是创建您自己的 API 扩展以计算所有扇区的连续 FAT 条目。

无需修改 API,您可以使用 f_lseek()。写打开一个文件,使用f_lseek() 来扩展文件的大小直到“磁盘已满”(连续空间结束)。需要对新文件重复此操作,直到分配完所有磁盘。从中选择最大分配的文件,并删除其他文件。

关于c - 如何在 FatFs 中获得最大的空闲连续内存块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44791646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com