c - 当程序遍历和报告文件系统细节时如何最好地分配和使用内存

标签 c linux memory malloc

我有一个程序可以读取所有文件系统文件/目录名称、大小等,并填充到树数据结构中。完成后,它将生成一份报告。

我想编写我的程序,以最有效的方式使用内存收集并报告这些数据,而不会超出我的堆空间。

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

最终这是真正的内存消耗,有什么方法/技巧可以克服这个问题吗?

最佳答案

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

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

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

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

关于c - 当程序遍历和报告文件系统细节时如何最好地分配和使用内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8396463/

相关文章:

linux - 如何更改 docker id 和名称

c - 依次进行一些 malloc() ,然后对其中之一进行重新分配???

c - 从 Buff 加载文件

c - 如何在 Linux 上重新实现(或包装)系统调用函数?

c++ - 使用递归在恒定空间和线性时间内向后打印链表

c - 如何纠正代码中的错误以查找 Euler's Totient。有人可以纠正我出错的部分吗?

c - Linux内核编码风格

linux - @plt在这里是什么意思?

java - 如何保存数组或对象以供其他运行使用

c++ - 为什么 realloc 会使我的自定义分配器数据无效?