]> git.sesse.net Git - freerainbowtables/blobdiff - Client Applications/rcracki_mt/MemoryPool.cpp
Merge branch 'master' of git@gitorious.org:freerainbowtables-applications/freerainbow...
[freerainbowtables] / Client Applications / rcracki_mt / MemoryPool.cpp
index 10e235c4b8485e4b4883d3571fd13c9c0358c4ad..77a4eabbd5aacca9bdd22776718c896ad7952084 100644 (file)
-/*
- * rcracki_mt is a multithreaded implementation and fork of the original 
- * RainbowCrack
- *
- * Copyright (C) Zhu Shuanglei <shuanglei@hotmail.com>
- * Copyright Martin Westergaard Jørgensen <martinwj2005@gmail.com>
- * Copyright 2009, 2010 Daniël Niggebrugge <niggebrugge@fox-it.com>
- * Copyright 2009, 2010 James Nobis <frt@quelrod.net>
- * Copyright 2010 uroskn
- *
- * This file is part of rcracki_mt.
- *
- * rcracki_mt is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * rcracki_mt is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with rcracki_mt.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "MemoryPool.h"
-#include "Public.h"
-
-CMemoryPool::CMemoryPool(unsigned int bytesSaved, bool bDebug, uint64 maxMem)
-{
-       m_pMem = NULL;
-       m_nMemSize = 0;
-       debug = bDebug;
-
-       uint64 nAvailPhys = GetAvailPhysMemorySize();
-
-       if ( debug )
-       {
-               #ifdef _WIN32
-                       printf( "Debug: nAvailPhys: %I64u\n", nAvailPhys );
-               #else
-                       printf( "Debug: nAvailPhys: %llu\n", nAvailPhys );
-               #endif
-               printf( "Debug: bytesSaved: %d\n", bytesSaved );
-       }
-
-       if ( maxMem > 0 && maxMem < nAvailPhys )
-               nAvailPhys = maxMem;
-       
-       m_nMemMax = nAvailPhys - bytesSaved;    // Leave memory for CChainWalkSet       
-
-       if (m_nMemMax < 16 * 1024 * 1024)
-               m_nMemMax = 16 * 1024 * 1024;
-}
-
-CMemoryPool::~CMemoryPool()
-{
-       if (m_pMem != NULL)
-       {
-               delete [] m_pMem;
-               m_pMem = NULL;
-               m_nMemSize = 0;
-       }
-}
-
-unsigned char* CMemoryPool::Allocate(unsigned int nFileLen, uint64& nAllocatedSize)
-{
-       if (nFileLen <= m_nMemSize)
-       {
-               nAllocatedSize = nFileLen;
-               return m_pMem;
-       }
-
-       unsigned int nTargetSize;
-       if (nFileLen < m_nMemMax)
-               nTargetSize = nFileLen;
-       else
-               nTargetSize = m_nMemMax;
-
-       // Free existing memory
-       if (m_pMem != NULL)
-       {
-               delete [] m_pMem;
-               m_pMem = NULL;
-               m_nMemSize = 0;
-       }
-
-       // Allocate new memory
-       //printf("allocating %u bytes memory\n", nTargetSize);
-       m_pMem = new (nothrow) unsigned char[nTargetSize];
-       while (m_pMem == NULL && nTargetSize >= 32 * 1024 * 1024 )
-       {
-          nTargetSize -= 16 * 1024 * 1024;
-          m_pMem = new (nothrow) unsigned char[nTargetSize];
-       }
-
-       if (m_pMem != NULL)
-       {
-               m_nMemSize = nTargetSize;
-               nAllocatedSize = nTargetSize;
-               return m_pMem;
-       }
-       else
-       {
-               m_nMemSize = 0;
-               nAllocatedSize = 0;
-               return NULL;
-       }
-}
+/*\r
+ * rcracki_mt is a multithreaded implementation and fork of the original \r
+ * RainbowCrack\r
+ *\r
+ * Copyright (C) Zhu Shuanglei <shuanglei@hotmail.com>\r
+ * Copyright Martin Westergaard Jørgensen <martinwj2005@gmail.com>\r
+ * Copyright 2009, 2010 Daniël Niggebrugge <niggebrugge@fox-it.com>\r
+ * Copyright 2009, 2010 James Nobis <frt@quelrod.net>\r
+ * Copyright 2010 uroskn\r
+ *\r
+ * This file is part of rcracki_mt.\r
+ *\r
+ * rcracki_mt is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation, either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * rcracki_mt is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with rcracki_mt.  If not, see <http://www.gnu.org/licenses/>.\r
+ */\r
+\r
+#include "MemoryPool.h"\r
+#include "Public.h"\r
+\r
+CMemoryPool::CMemoryPool(unsigned int bytesSaved, bool bDebug, uint64 maxMem)\r
+{\r
+       m_pMem = NULL;\r
+       m_nMemSize = 0;\r
+       debug = bDebug;\r
+\r
+       unsigned long nAvailPhys = GetAvailPhysMemorySize();\r
+\r
+       if ( debug )\r
+       {\r
+               #if defined(_WIN32) && !defined(__GNUC__)\r
+                       printf( "Debug: nAvailPhys: %I64u\n", nAvailPhys );\r
+               #else\r
+                       printf( "Debug: nAvailPhys: %lu\n", nAvailPhys );\r
+               #endif\r
+               printf( "Debug: bytesSaved: %d\n", bytesSaved );\r
+       }\r
+\r
+       if ( maxMem > 0 && maxMem < nAvailPhys )\r
+               nAvailPhys = maxMem;\r
+       \r
+       m_nMemMax = nAvailPhys - bytesSaved;    // Leave memory for CChainWalkSet       \r
+\r
+       if (m_nMemMax < 16 * 1024 * 1024)\r
+               m_nMemMax = 16 * 1024 * 1024;\r
+}\r
+\r
+CMemoryPool::~CMemoryPool()\r
+{\r
+       if (m_pMem != NULL)\r
+       {\r
+               delete [] m_pMem;\r
+               m_pMem = NULL;\r
+               m_nMemSize = 0;\r
+       }\r
+}\r
+\r
+unsigned char* CMemoryPool::Allocate(unsigned int nFileLen, uint64& nAllocatedSize)\r
+{\r
+       if (nFileLen <= m_nMemSize)\r
+       {\r
+               nAllocatedSize = nFileLen;\r
+               return m_pMem;\r
+       }\r
+\r
+       unsigned int nTargetSize;\r
+       if (nFileLen < m_nMemMax)\r
+               nTargetSize = nFileLen;\r
+       else\r
+               nTargetSize = m_nMemMax;\r
+\r
+       // Free existing memory\r
+       if (m_pMem != NULL)\r
+       {\r
+               delete [] m_pMem;\r
+               m_pMem = NULL;\r
+               m_nMemSize = 0;\r
+       }\r
+\r
+       // Allocate new memory\r
+       //printf("allocating %u bytes memory\n", nTargetSize);\r
+       m_pMem = new (nothrow) unsigned char[nTargetSize];\r
+       while (m_pMem == NULL && nTargetSize >= 32 * 1024 * 1024 )\r
+       {\r
+               nTargetSize -= 16 * 1024 * 1024;\r
+               m_pMem = new (nothrow) unsigned char[nTargetSize];\r
+       }\r
+\r
+       if (m_pMem != NULL)\r
+       {\r
+               m_nMemSize = nTargetSize;\r
+               nAllocatedSize = nTargetSize;\r
+               return m_pMem;\r
+       }\r
+       else\r
+       {\r
+               m_nMemSize = 0;\r
+               nAllocatedSize = 0;\r
+               return NULL;\r
+       }\r
+}\r