Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 14th, 2012  |  syntax: None  |  size: 1.07 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Memory leak in using a list of lists
  2. someStruct->arrayMap = new std::list<BasisIndex>*[someStruct->mapSizeX];
  3. for(int i=0; i<someStruct->mapSizeX; i++){  
  4.     someStruct->arrayMap[i] = new std::list<BasisIndex>[someStruct->mapSizeY];
  5. }
  6.        
  7. struct SomeStruct{
  8.     int mapSizeX;
  9.     int mapSizeY;
  10.     std::list<BasisIndex>** arrayMap;
  11. };
  12.        
  13. someStruct->arrayMap[xVal][yVal].push_back(tempIndex);
  14.  
  15. for(it = someStruct->arrayMap[xVal][yVal].begin(); it != someStruct->arrayMap[xVal][yVal].end(); it++){
  16.     ...
  17. }
  18.        
  19. for(int x=0; x<someStruct->mapSizeX; x++){
  20.     for(int y=0; y<someStruct->mapSizeY; y++){
  21.         someStruct->arrayMap[x][y].clear();
  22.         someStruct->arrayMap[x][y].~list();
  23.     }
  24. }
  25.  
  26. std::list<BasisIndex> ** temp = someStruct->arrayMap;
  27. delete temp;
  28.        
  29. someStruct->arrayMap = new std::list<BasisIndex>*[someStruct->mapSizeX];
  30. for(int i=0; i<someStruct->mapSizeX; i++){  
  31.     someStruct->arrayMap[i] = new std::list<BasisIndex>[someStruct->mapSizeY];
  32. }
  33.        
  34. for (int i=0; i<someStruct->mapSizeX; i++){
  35.     delete[] someStruct->arrayMap[i];
  36. }
  37. delete[] someStruct->arrayMap;