使用 FatFs 和他们的API,我正在尝试为驱动器的其余部分预分配文件系统空间以写入未知大小的文件。在文件写入过程结束时,任何未使用的空间都会被截断(f_truncate)。但是,当文件系统在删除某些文件后变得碎片化时,我在分配足够的空间时遇到了问题。为了克服这个问题,我只想分配足够的空间作为文件系统上最大的连续内存块。
在 FatFS API 中,有一些函数可以获取设备上剩余的可用空间量,即 f_getfree。还有一个 f_expand 函数,它以字节为单位接收大小,并返回给定大小的空闲连续内存块是否存在。
有没有一种有效的方法来计算可用的最大空闲连续内存块?我试图避免任何形式的蛮力“猜测和检查”方法。谢谢