X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=Common%2Frt%20api%2FMemoryPool.cpp;fp=Common%2Frt%20api%2FMemoryPool.cpp;h=4c8d5c98eeb810e7d06ac81ad017bf8ef12d5e61;hb=3d42602c1f746b5768f0e6c9d22884a9806eadc0;hp=1019b4f736212ce01b987e1d9fa729da48240a36;hpb=2fc61ff60954ebd5d560acfe3dc9653064ce40b5;p=freerainbowtables diff --git a/Common/rt api/MemoryPool.cpp b/Common/rt api/MemoryPool.cpp index 1019b4f..4c8d5c9 100644 --- a/Common/rt api/MemoryPool.cpp +++ b/Common/rt api/MemoryPool.cpp @@ -25,8 +25,10 @@ CMemoryPool::CMemoryPool() CMemoryPool::~CMemoryPool() { - if (m_pMem != NULL) - { + if (m_pMem != NULL) { +#ifdef _MEMORYDEBUG + printf("Freeing %i bytes of memory\n", m_nMemSize); +#endif delete m_pMem; m_pMem = NULL; m_nMemSize = 0; @@ -35,21 +37,23 @@ CMemoryPool::~CMemoryPool() unsigned char* CMemoryPool::Allocate(unsigned int nFileLen, unsigned int& nAllocatedSize) { - if (nFileLen <= m_nMemSize) - { + if (nFileLen <= m_nMemSize) { nAllocatedSize = nFileLen; return m_pMem; } unsigned int nTargetSize; - if (nFileLen < m_nMemMax) + if (nFileLen < m_nMemMax) { nTargetSize = nFileLen; - else + } + else { nTargetSize = m_nMemMax; - + } // Free existing memory - if (m_pMem != NULL) - { + if (m_pMem != NULL) { +#ifdef _MEMORYDEBUG + printf("Freeing %i bytes of memory\n", m_nMemSize); +#endif delete m_pMem; m_pMem = NULL; m_nMemSize = 0; @@ -57,21 +61,29 @@ unsigned char* CMemoryPool::Allocate(unsigned int nFileLen, unsigned int& nAlloc // Allocate new memory //printf("allocating %u bytes memory\n", nTargetSize); -// m_pMem = new unsigned char[nTargetSize]; -m_pMem = new (nothrow) unsigned char[nTargetSize]; -while (m_pMem == NULL && nTargetSize >= 512 * 1024 * 1024 ) -{ - nTargetSize -= 16 * 1024 * 1024; - m_pMem = new (nothrow) unsigned char[nTargetSize]; -} - if (m_pMem != NULL) - { + // m_pMem = new unsigned char[nTargetSize]; +#ifdef _MEMORYDEBUG + printf("Allocating %i bytes of memory - ", nTargetSize); +#endif + + m_pMem = new (nothrow) unsigned char[nTargetSize]; + while (m_pMem == NULL && nTargetSize >= 512 * 1024 * 1024 ) { +#ifdef _MEMORYDEBUG + printf("failed!\n"); + printf("Allocating %i bytes of memory (backup) - ", nTargetSize); +#endif + nTargetSize -= 16 * 1024 * 1024; + m_pMem = new (nothrow) unsigned char[nTargetSize]; + } + if (m_pMem != NULL) { +#ifdef _MEMORYDEBUG + printf("success!\n"); +#endif m_nMemSize = nTargetSize; nAllocatedSize = nTargetSize; return m_pMem; } - else - { + else { nAllocatedSize = 0; return NULL; }