Arbeitsspeicherprobleme
-
Ich schreibe gerade ein plugin (dll) für ein Programm in MFC.
IVGAMap und IAttributes sind Klassen die vom Programm zu Verfügung gestellt werden.
Wenn ich den Unten angegebenen Code ausführe (ca. n = 2000) dann geht der Arbeitsspeicherverbrauch in luftige Höhen... und ich habe keine Ahnung warum...
bool CPathSightAnalyseApp::Analyse(CString tempRoom,IVGAMap *vga,IAttributes *table){ char column_Dist[64],column_Frag[64],column_Vis[64], column_Loc[64]; strcpy_s(column_Dist, "001 Mean distanze" ); strcpy_s(column_Frag, "001 Mean fragmentation" ); strcpy_s(column_Vis, "001 Mean visibility" ); strcpy_s(column_Loc, "001 Mean location" ); char column_Unwalkable[64]; strcpy_s(column_Unwalkable, "000 Unwalkable" ); float value,valueN; Room temp; temp = Rooms.at(tempRoom); int cursor = vga->getFirstPoint(); while(cursor != -1) { // Irgendwas zwischen hier läßt den Arbeitsspeicher in die höhe gehen.... valueN = table->getAttribute(cursor,column_Dist); if(valueN >= 0) { value = table->getAttribute(cursor,temp.getDist()); valueN += value; table->setAttribute(cursor,column_Dist,valueN); } valueN = table->getAttribute(cursor,column_Frag); if(valueN >= 0) { value = table->getAttribute(cursor,temp.getFrag()); valueN += value; table->setAttribute(cursor,column_Frag,valueN); } valueN = table->getAttribute(cursor,column_Vis); if(valueN >= 0) { value = table->getAttribute(cursor,temp.getVis()); valueN += value; table->setAttribute(cursor,column_Vis,valueN); } valueN = table->getAttribute(cursor,column_Loc); if(valueN >= 0) { value = table->getAttribute(cursor,temp.getLoc()); valueN += value; table->setAttribute(cursor,column_Loc,valueN); } // eund hier cursor = vga->getNextPoint(); } return true; }
mäh ein Schaf
-