2 RainbowCrack - a general propose implementation of Philippe Oechslin's faster time-memory trade-off technique.
4 Copyright (C) Zhu Shuanglei <shuanglei@hotmail.com>
7 #include "MemoryPool.h"
10 CMemoryPool::CMemoryPool()
15 unsigned int nAvailPhys = GetAvailPhysMemorySize();
16 if (nAvailPhys < 16 * 1024 * 1024)
17 m_nMemMax = nAvailPhys / 2; // Leave some memory for CChainWalkSet
19 m_nMemMax = nAvailPhys - 8 * 1024 * 1024; // Leave some memory for CChainWalkSet
20 m_nMemMax = 300 * 1024 * 1024;
23 CMemoryPool::~CMemoryPool()
33 unsigned char* CMemoryPool::Allocate(unsigned int nFileLen, unsigned int& nAllocatedSize)
35 if (nFileLen <= m_nMemSize)
37 nAllocatedSize = nFileLen;
41 unsigned int nTargetSize;
42 if (nFileLen < m_nMemMax)
43 nTargetSize = nFileLen;
45 nTargetSize = m_nMemMax;
47 // Free existing memory
55 // Allocate new memory
56 //printf("allocating %u bytes memory\n", nTargetSize);
57 m_pMem = new unsigned char[nTargetSize];
60 m_nMemSize = nTargetSize;
61 nAllocatedSize = nTargetSize;