Ich habe einen RAM von 2 GB. Wir haben eine Anwendung, die Export/Import-Operationen durchführt. Wir haben eine rekursive Funktion, die eine lokale Variable vom Typ Set hat, die bei jeder Iteration weiter gefüllt wird. Dieses Set wächst weiter und an einem Punkt fehlt uns der Speicher.Rekursion führt zu nicht genügend Speicher
Gibt es alternative Datenstrukturen, die den Speicher optimal nutzen können?
Hier ist der grobe Code
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);
}
}
Können Sie etwas genauer zu Ihrem Algorithmus sein? Geben Sie eine grobe Beschreibung dessen an, was Sie mit dem Set tun und wie der Algorithmus rekursiv ist. – TrayMan
haben den groben Code bearbeitet –