www.pudn.com > XvidQP.rar > memcheck.cpp
// VirtualDub - Video processing and capture application // Copyright (C) 1998-2001 Avery Lee // // This program 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. // // This program 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 this program; if not, write to the Free Software // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include#include #if 0 void *allocmem(size_t siz) { void *mem; size_t rsiz = (siz + 4095 + 8) & -4096; mem = VirtualAlloc(NULL, rsiz, MEM_COMMIT, PAGE_READWRITE); if (!mem) return NULL; mem = (char *)mem + rsiz - ((siz+7)&-8) - 8; ((long *)mem)[0] = siz; ((long *)mem)[1] = 0x12345678; return (char *)mem + 8; } void freemem(void *block) { if (!block) return; block = (void *)((char *)block - 8); if (((long *)block)[1] != 0x12345678) __asm int 3 VirtualFree((void *)((long)block & -4096), 0, MEM_RELEASE); } void *reallocmem(void *block, size_t siz) { void *nblock = allocmem(siz); if (!nblock) return NULL; if (!block) return nblock; if (((long *)block)[-1] != 0x12345678) __asm int 3 if (siz < ((long *)block)[-2]) siz = ((long *)block)[-2]; memcpy(nblock, block, siz); return nblock; } void *callocmem(size_t s1, size_t s2) { void *mem = allocmem(s1 * s2); if (!mem) return NULL; memset(mem, 0, s1*s2); return mem; } void *operator new(size_t siz) { return allocmem(siz); } void operator delete(void *block) { freemem(block); } #else void *allocmem(size_t siz) { return malloc(siz); } void freemem(void *block) { free(block); } void *reallocmem(void *block, size_t siz) { return realloc(block, siz); } void *callocmem(size_t s1, size_t s2) { return calloc(s1, s2); } #endif