私は2GBのRAMを持っています。エクスポート/インポート操作を実行するアプリケーションがあります。 私たちには、Set型の1つのローカル変数を持つ再帰関数があります。このセットは成長し続け、ある時点ではメモリが足りなくなります。メモリ不足の再帰
メモリを最適に使用できる代替データ構造はありますか?
は、ここで代替構造はあまり役に立たないラフなコード
GetObjectsForExportImpl(long lExportOptions, __int64 numIdProject, XExportSets
&exportSets, long lClientId, CComPtr<IEPIPDServer> 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);
}
}
アルゴリズムについて少し詳しく説明できますか?あなたがセットで何をするのか、アルゴリズムがどのように反復するのかを大まかに説明してください。 – TrayMan
は大まかなコードを編集しました –