我有一个程序可以读取所有文件系统文件/目录名称、大小等,并填充到树数据结构中。完成后,它将生成一份报告。
我想编写我的程序,以最有效的方式使用内存收集并报告这些数据,而不会超出我的堆空间。
我担心如果文件系统有很多文件和目录,它会消耗大量内存并可能最终用完(malloc()
将开始失败)。
最终这是真正的内存消耗,有什么方法/技巧可以克服这个问题吗?
最佳答案
您可以为每个文件夹节点使用享元设计模式。
http://en.wikipedia.org/wiki/Flyweight_pattern
您可以使用指向部分路径(文件夹名称)的指针的位数组来代替存储每个项目的完整路径。如果需要,这些可以很容易地重建。
这还取决于您的报告需要什么。您是否需要在构造期间将所有信息保存在内存中,或者您是否可以在遍历树时只累积一些空间计数变量?
关于c - 当程序遍历和报告文件系统细节时如何最好地分配和使用内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8396463/