【发布时间】:2011-02-08 12:54:06
【问题描述】:
我正在尝试在辅助内存(硬盘)上构建四叉树数据结构(或者我们只是说一棵树)。
我有一个 C++ 程序来执行此操作,我使用 fopen 创建文件。另外,我使用 tesseral 编码将每个单元格存储在一个文件中,该文件以其相应的代码命名,以将其存储在磁盘上的一个目录中。
问题是在创建了大约 1,100 个文件后,fopen 只返回 NULL 并停止创建新文件。我可以在该目录中手动创建更多文件,但使用 C++ 无法创建更多文件。
我知道 ext3 文件系统上 inode 的最大限制是(来自 Wikipedia)32,000,但我的要少得多,还要注意我可以在磁盘上手动创建文件;只是没有通过 fopen。
另外,我非常感谢有关在磁盘上存储非常动态的四叉树的最佳方法的任何想法(我需要将节点放在单独的文件中,并且四叉树的深度可能为 50)。
使用嵌套目录是一种想法,但我认为它会降低性能,因为要遵循文件系统上的链接来访问文件。
谢谢, 尼玛
【问题讨论】:
标签: c++ tree operating-system filesystems inode