⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newhandler.cpp

📁 sleuthit-2.09 一个磁盘的工具集
💻 CPP
字号:
// NewHandler.cpp #include "StdAfx.h"#include <stdlib.h>#include "NewHandler.h"// #define DEBUG_MEMORY_LEAK#ifndef DEBUG_MEMORY_LEAK#ifdef _WIN32void * #ifdef _MSC_VER__cdecl #endifoperator new(size_t size){  // void *p = ::HeapAlloc(::GetProcessHeap(), 0, size);  void *p = ::malloc(size);  if (p == 0)    throw CNewException();  return p;}void #ifdef _MSC_VER__cdecl #endifoperator delete(void *p) throw(){  /*  if (p == 0)    return;  ::HeapFree(::GetProcessHeap(), 0, p);  */  ::free(p);}#endif#else#pragma init_seg(lib)const int kDebugSize = 1000000;static void *a[kDebugSize];static int index = 0;static int numAllocs = 0;void * __cdecl operator new(size_t size){  numAllocs++;  void *p = HeapAlloc(GetProcessHeap(), 0, size);  if (index == 40)  {    int t = 1;  }  if (index < kDebugSize)  {    a[index] = p;    index++;  }  if (p == 0)    throw CNewException();  printf("Alloc %6d, size = %8d\n", numAllocs, size);  return p;}class CC{public:  CC()  {    for (int i = 0; i < kDebugSize; i++)      a[i] = 0;  }  ~CC()  {    for (int i = 0; i < kDebugSize; i++)      if (a[i] != 0)        return;  }} g_CC;void __cdecl operator delete(void *p){  if (p == 0)    return;  /*  for (int i = 0; i < index; i++)    if (a[i] == p)      a[i] = 0;  */  HeapFree(GetProcessHeap(), 0, p);  numAllocs--;  printf("Free %d\n", numAllocs);}#endif/*int MemErrorVC(size_t){  throw CNewException();  // return 1;}CNewHandlerSetter::CNewHandlerSetter(){  // MemErrorOldVCFunction = _set_new_handler(MemErrorVC);}CNewHandlerSetter::~CNewHandlerSetter(){  // _set_new_handler(MemErrorOldVCFunction);}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -