如何在存储文件之前找到可用内存?

时间:2012-05-09 09:04:51

标签: c++ memory-management file-io

我想使用C ++代码将某些文件保存在特定文件夹(/ tmp /)中。 在存储文件之前

  1. 我需要检查是否有足够的内存可用。如果没有,我需要从存储中删除最旧的文件,然后我需要存储一个新文件。
  2. 我还需要知道我的代码中存储的文件详细信息才能访问它们。
  3. 我的实施是:

    std::map<string IfileName, int iDetail>
    

    我创建了一个Map实例,每当我创建文件数据时,我都会在地图中存储细节。 地图问题是:

    1. 地图会自动对文件名进行排序。所以我无法识别最旧的文件。
    2. 假设,文件在存储中被删除,那么map也会有关于该文件的详细信息。

2 个答案:

答案 0 :(得分:0)

对于您的第一个问题,请尝试阅读here。关于你问题的第二部分。为什么你不想使用对的向量。在这种情况下,您可以使用push_back。

答案 1 :(得分:0)

在某些时候,我使用了map和deque的组合来解决类似的问题。诀窍是每个value_type(在map和deque中)都需要用交叉指针扩展。因此,当您使用某个键运行map.find()时,您收到的值会有一个指向deque中元素的指针。反之亦然。要找到最旧的(LRU)文件,只需执行deque.pop_back(),取消引用您进入地图的指针,查看详细信息并确定是否需要删除另一个文件。