heaplog
#ifdef _DEBUG #include <stdio.h>
#include <stdlib.h>
#include <string.h> #define _BUF_SIZE 128 static const char* g_FileName = "HeapLog.txt";
static const char* g_AllocateFail = "分配失败 --- 当前情况(分配:%d, 释放:%d)\x0a";
static const char* g_AllocateOK = "分配成功(地址:%p, 大小:%d) --- 当前情况(分配:%d, 释放:%d)\x0a";
static const char* g_FreeOK = "释放成功(地址:%p) --- 当前情况(分配:%d, 释放:%d)\x0a";
static int g_AllocateNum = ;
static int g_FreeNum = ;
static char g_Buf[_BUF_SIZE]; void* operator new(size_t s)
{
void* p = malloc(s); FILE* pF;
fopen_s(&pF, g_FileName, "a"); if (!p)
sprintf_s(g_Buf, _BUF_SIZE, g_AllocateFail, g_AllocateNum, g_FreeNum);
else
{
g_AllocateNum++;
sprintf_s(g_Buf, _BUF_SIZE, g_AllocateOK, p, s, g_AllocateNum, g_FreeNum);
} fwrite(g_Buf, sizeof(char), strlen(g_Buf), pF);
fflush(pF);
fclose(pF);
return p;
} void operator delete(void* p)
{
free(p);
g_FreeNum++; FILE* pF;
fopen_s(&pF, g_FileName, "a"); sprintf_s(g_Buf, _BUF_SIZE, g_FreeOK, p, g_AllocateNum, g_FreeNum);
fwrite(g_Buf, sizeof(char), strlen(g_Buf), pF);
fflush(pF);
fclose(pF);
} void* operator new[](size_t s)
{
return operator new(s);
} void operator delete[](void* p)
{
operator delete(p);
} #endif
heaplog的更多相关文章
- 手把手教你定位常见Java性能问题
概述 性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙 ...
随机推荐
- Linux用户的基本操作1 用户相关信息 及useradd /usermod 部分
目录 linux 用户管理 - 用户的基本操作 用户管理 用户的相关命令 linux 用户管理 - 用户的基本操作 用户管理 1.什么是用户? 用户指的是能够正常登录Linux或windows系统 2 ...
- nginx 安装 thinkphp5 配置
nginx.conf server { listen ; server_name s.huailaixx.com; charset utf-; location ~ \.php { root /dat ...
- 最长公共子序列板/滚动 N^2
#include <bits/stdc++.h> using namespace std; int main() { ][],t; ],b[]; bool now,pre; scanf(& ...
- 039:模版结构优化之include标签详解
引入模版: 有时候一些代码是在许多模版中都用到的.如果我们每次都重复的去拷贝代码那肯定不符合项目的规范.一般我们可以把这些重复性的代码抽取出来,就类似于Python中的函数一样,以后想要使用这些代码的 ...
- 【GDOI2014模拟】网格
题目 某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标为B(n, m),其中n >= m.现在从A(0, 0)点出发,只能沿着街道向正右方或者正上方行走,且不能经过图示中直线左上方的 ...
- hash详细介绍
转发http://www.cnblogs.com/maybe2030/p/4719267.html (请转步这个网站,写得非常好)
- 【微信小程序】setData的使用以及注意事项
Page.prototype.setData(Object data, Function callback) setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.da ...
- 计蒜客 T2237 魔法 分类讨论
Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) # ...
- CF543C Remembering Strings 状压dp
Code: #include <cstdio> #include <algorithm> #include <cstring> #define setIO(s) f ...
- 01 Netty是什么?
01 Netty是什么? IO编程 我们简化下场景:客户端每隔两秒发送一个带有时间戳的 "hello world" 给服务端,服务端收到之后打印. 为了方便演示,下面例子中,服务端 ...