• heaplog


     1 #ifdef _DEBUG
     2 
     3 #include <stdio.h>
     4 #include <stdlib.h>
     5 #include <string.h>
     6 
     7 #define _BUF_SIZE 128
     8 
     9 static const char* g_FileName = "HeapLog.txt";
    10 static const char* g_AllocateFail = "分配失败 --- 当前情况(分配:%d, 释放:%d)x0a";
    11 static const char* g_AllocateOK = "分配成功(地址:%p, 大小:%d) --- 当前情况(分配:%d, 释放:%d)x0a";
    12 static const char* g_FreeOK = "释放成功(地址:%p) --- 当前情况(分配:%d, 释放:%d)x0a";
    13 static int g_AllocateNum = 0;
    14 static int g_FreeNum = 0;
    15 static char g_Buf[_BUF_SIZE];
    16 
    17 void* operator new(size_t s)
    18 {
    19     void* p = malloc(s);
    20 
    21     FILE* pF;
    22     fopen_s(&pF, g_FileName, "a");
    23 
    24     if (!p)
    25         sprintf_s(g_Buf, _BUF_SIZE, g_AllocateFail, g_AllocateNum, g_FreeNum);
    26     else
    27     {
    28         g_AllocateNum++;
    29         sprintf_s(g_Buf, _BUF_SIZE, g_AllocateOK, p, s, g_AllocateNum, g_FreeNum);
    30     }
    31 
    32     fwrite(g_Buf, sizeof(char), strlen(g_Buf), pF);
    33     fflush(pF);
    34     fclose(pF);
    35     return p;
    36 }
    37 
    38 void operator delete(void* p)
    39 {
    40     free(p);
    41     g_FreeNum++;
    42 
    43     FILE* pF;
    44     fopen_s(&pF, g_FileName, "a");
    45 
    46     sprintf_s(g_Buf, _BUF_SIZE, g_FreeOK, p, g_AllocateNum, g_FreeNum);
    47     fwrite(g_Buf, sizeof(char), strlen(g_Buf), pF);
    48     fflush(pF);
    49     fclose(pF);
    50 }
    51 
    52 void* operator new[](size_t s)
    53 {
    54     return operator new(s);
    55 }
    56 
    57 void operator delete[](void* p)
    58 {
    59     operator delete(p);
    60 }
    61 
    62 #endif
  • 相关阅读:
    JS事件类型详解
    migrate的使用
    phpMyAdmin安装教程
    Unable to verify your data submission错误解决
    安装yii2高级应用模板
    关于模型中的几个概念或知识点
    视图被渲染的几种方式
    统计学与大数据分析
    物联网、云计算、大数据、人工智能概念如何区分
    物联网、云计算、大数据、人工智能概念如何区分
  • 原文地址:https://www.cnblogs.com/herizai/p/3157640.html
Copyright © 2020-2023  润新知