g) { 86 Глава 2 • Защитное пр

Автор admin Пятница, 8 мая 2009 11:32

g) { 86 Глава 2 • Защитное программирование if (nptrs == MAXPTRS) { printf(“memory map too small (increase MAXPTRS)\n”); exit(l); } memMap[nptrs].ptr = p; memMap[nptrs].file = file; memMap[nptrs].line = line; ++nptrs; } if (traceFlag) { printf(“Allocated %u bytes at address %p “. siz. p); printf(“(file: %s. line: %ld)\n”. file, line); } return p; } // Перегрузка версии new для массивов void* operator new[](size_t siz. const char* file, long line) { return operator new(siz. file, line); } // Перегрузка скалярной версии delete void operator delete(void* p) { if (findPtr(p) >= 0) { free(p): assert(nptrs > 0): delPtr(p); if (traceFlag) printf(“Deleted memory at address Xp\n”. p): } else if (!p && activeFlag) printf(“Attempt to delete unknown pointer: ?p\n”. p): } // Перегрузка версии delete для массива void operator delete[](void* p) { operator delete(p); } ///:- Логические флаги traceFlag и activeFlag являются глобальными, поэтому их состояние может изменяться в программе макросами TRACE_ON(),TRACE_OFF(), MEM_ON() и MEM_OFF(). Обычно в пару макросов MEM_ON()—MEM_OFF() заключается весь код main(), чтобы оп


Комментарии закрыты.