当程序遍历和报告文件系统详细信息时,如何最好地分配和使用内存



我有一个程序,读取所有的文件系统文件/目录名称,大小等,并填充在一个树的数据结构。完成此操作后,它将生成一个报告。

我希望我的程序能够以最有效的方式使用内存并在不超过堆空间的情况下收集和报告这些数据。

我担心如果文件系统有很多文件和目录。,它将消耗大量内存,并可能最终耗尽(malloc()将开始失败)。

最终这是真正的内存消耗,是否有任何方法/技术来克服这一点?

您可以为每个文件夹节点使用Flyweight设计模式。

http://en.wikipedia.org/wiki/Flyweight_pattern

您可以使用指向部分路径(文件夹名称)的指针的位数组,而不是存储每个项目的完整路径。如果需要,这些可以很容易地重建。

这也取决于你的报告需要什么。您是否需要在构造期间将所有信息保存在内存中,或者您是否可以在遍历树时积累一些空间计数变量?

也许使用valgrind或Boehm的垃圾收集器可以帮助您(至少在Linux上)。

最新更新