博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
A Reusable Aspect for Memory Profiling
阅读量:5886 次
发布时间:2019-06-19

本文共 1378 字,大约阅读时间需要 4 分钟。

例子:

malPro.acc文件:

#include <stdlib.h>

size_t totalMemoryAllocated;
int totalAllocationFuncCalled;
int totalFreeFuncCalled;

void initProfiler() {

totalMemoryAllocated = 0;
totalAllocationFuncCalled = 0;
totalFreeFuncCalled = 0;
}

void printProfiler() {

printf("total memory allocated = %d bytes\n", totalMemoryAllocated );
printf("total memory allocation function called = %d \n", totalAllocationFuncCalled);
printf("total memory free function called = %d\n", totalFreeFuncCalled);
}

before(): execution(int main()) {

initProfiler();
}
after(): execution(int main()) {
printProfiler();
}

before(size_t s): call($ malloc(...)) && args(s) {

totalMemoryAllocated += s;
totalAllocationFuncCalled ++;
}
before(size_t n, size_t s): call($ calloc(...)) && args(n, s) {
totalMemoryAllocated += n * s;
totalAllocationFuncCalled ++;
}

before(size_t s): call($ realloc(...)) && args(void *, s) {

totalMemoryAllocated += s;
totalAllocationFuncCalled ++;
}

before() : call(void free(void *)) {
totalFreeFuncCalled++;
}

mal.c文件:

#include <stdio.h>

#include <malloc.h>
void t1()
{
int *x ;
printf(" core code:hehe ! \n");
x = (int *)malloc(sizeof(int) * 4);
printf(" core code:hehe ! ! \n");
}
int main()
{
t1();
int *x ;
printf(" core code:hehe ! ! \n");
x = (int *)malloc(sizeof(int) * 4);
printf(" core code:hehe ! ! \n");
return 0;
}

转载于:https://www.cnblogs.com/xiaohuihui123/p/4565443.html

你可能感兴趣的文章
学习Linux旅途--Day Four--
查看>>
机器学习——K-近邻(KNN)算法
查看>>
Exchange 日常管理六之:创建邮箱数据库
查看>>
LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍
查看>>
JavaScript常用代码(不定时更新)
查看>>
git/github使用初探
查看>>
Windows Server 磁盘空间不足怎么办
查看>>
PMP考前复习题 系列一
查看>>
Oracle 数据完整性(学习笔记)
查看>>
我的友情链接
查看>>
Got a packet bigger than ‘max_allowed_packet’ bytes的解决方法
查看>>
oracle数据库版本检查解决方法
查看>>
Data Guard 和DGMGRL
查看>>
Memcached 原理和使用
查看>>
Oracle中NLS_DATE_FORMAT永久生效的设置方法
查看>>
高线教材管理系统
查看>>
passive-interface
查看>>
Linq to Xml读取复杂xml(带命名空间)
查看>>
我的友情链接
查看>>
How to Be Good
查看>>