zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    取消Git代理设置
    在Go语言中使用JSON(去掉空字段)
    go-- 用go-mssql驱动连接sqlserver数据库
    Go加密解密之DES
    Go语言interface详解
    Go--避免SQL注入
    golang: 把sql结果集以json格式输出
    Golang操作数据库
    Oracle ORA-01555(快照过旧)
    racle undo 解析
  • 原文地址:https://www.cnblogs.com/herizai/p/3157640.html
Copyright © 2011-2022 走看看