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性能问题
概述 性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙 ...
随机推荐
- C 调试 gdb常用命令
gdb常用命令: [root@redhat home]#gdb 调试文件:启动gdb (gdb) l :(字母l)从第一行开始列出源码 (gdb) break n :在第n行处设置断点 (gdb) b ...
- Comet OJ - Contest #0 A题 解方程 (数学)
题目描述 小象同学在初等教育时期遇到了一个复杂的数学题,题目是这样的: 给定自然数 nn,确定关于 x, y, zx,y,z 的不定方程 \displaystyle \sqrt{x - \sqrt{n ...
- Linux 安装FTP服务
Linux 安装FTP服务,简单入门 环境: 虚拟机:Oracle VM VirtualBox. 系统:CentOS 7. (1)判断是否安装了ftp: rpm -qa | grep vsftpd 或 ...
- React 之React.createContext
使用Context,可以跨越组件进行数据传递 import React from 'react'; import ReactDOM from 'react-dom'; const ThemeConte ...
- vi set the tab width for python
Put your desired settings in the ~/.vimrc file -- See below for some guidelines and best practices. ...
- 8,HashMap子类-LinkedHashMap
在上一篇随笔中,分析了HashMap的源码,里面涉及到了3个钩子函数(afterNodeAccess(e),afterNodeInsertion(evict),afterNodeRemoval(nod ...
- B/S实现大视频上传
在公司做B/S 开发与维护三年啦, 对B/S架构的了解也是只知大概,对于这种基础知识还是很有必要理一理哒.趁空去网上查阅了资料,顺便整理一份笔记供以后查询. 一. B/S的概念 B/S(Brower/ ...
- 【CF10D】LCIS(LCIS)
题意:求两个序列的LCIS n,m<=300,a[i]<=1e9 题意:O(n^2) O(n^3)的话设dp[i,j]为A终点为a[1..i]且B终点为b[j]的最大长度,分a[i]==b ...
- <知识整理>2019清北学堂提高储备D5
今天主讲图论. 前言:图的定义:图G是一个有序二元组(V,E),其中V称为顶集(Vertices Set),E称为边集(Edges set),E与V不相交.它们亦可写成V(G)和E(G). 一.图的存 ...
- js中获取当前系统时间
使用var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFullYea ...