当前位置:  开发笔记 > 编程语言 > 正文

递归导致内存不足

如何解决《递归导致内存不足》经验,为你挑选了1个好方法。

我有2 GB的RAM.我们有一个执行导出/导入操作的应用程序.我们有一个递归函数,它有一个类型为Set的局部变量,它会在每次迭代时继续填充.这个集合不断增长,一度我们的内存耗尽.

是否有可以最佳地使用内存的替代数据结构?

这是粗略的代码

GetObjectsForExportImpl(long lExportOptions, __int64 numIdProject, XExportSets
     &exportSets, long lClientId, CComPtr ptrIPDServer,FILE *fp)
{
    XExportSets exportLocal;   //Thats a structure containing the Set
    QueryObjectsForExport(lExportOptions, numIdProject, exportLocal,
         lClientId, ptrIPDServer);
    SetIDs::iterator it = exportLocal.setShared.begin();

    for (; it != exportLocal.setShared.end(); ++it)
    {
         //recursive call
         pExportObject->GetObjectsForExportImpl(lExportOptions,
             numIdProject, exportSets, lClientId, ptrIPDServer,fp);
    }
}

Sedat Kapano.. 7

另一种结构无济于事.假设您切换到使用一半内存的类.你仍然只是拖延厄运.

结构大小为2GB通常表示您需要切换到基于磁盘的结构,数据库或内存映射哈希表.



1> Sedat Kapano..:

另一种结构无济于事.假设您切换到使用一半内存的类.你仍然只是拖延厄运.

结构大小为2GB通常表示您需要切换到基于磁盘的结构,数据库或内存映射哈希表.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有