是否有一个我可以使用的库(没有自己的编码),它为我提供了有关我已经malloc'ed和free'ed多少次的统计数据,以及分配的字节数?
答案 0 :(得分:2)
如果您想检测内存泄漏等,Valgrind(另请参阅Wikipedia)也是一种选择。
我知道,这是一种非常非常基本的方法,但#defines
可能是出于您的目的吗?
EG。把这样的东西放到标题中:
#ifdef COUNT_MALLOCS
static int mallocCounter;
static int mallocBytes;
// Attention! Not safe to single if-blocks without braces!
# define malloc(x) malloc(x); mallocCounter++; mallocBytes += x
# define free(x) free(x); mallocCounter++
# define printStat() printf("Malloc count: %d\nBytes: %d\n", mallocCounter, mallocBytes)
#else
# define malloc(x)
# define free(x)
# define printStat()
#endif /* COUNT_MALLOCS */
既不灵活也不安全,但它应该适用于简单计数。
修改强>
也许最好将malloc()
定义为自定义函数,因此单行if-blocks是安全的。
static int mallocCounter;
static int mallocBytes;
// ...
static inline void* counting_malloc(size_t size)
{
mallocCounter++;
mallocBytes += size;
return malloc(size);
}
static inline void couting_free(void* ptr)
{
mallocCounter--;
free(ptr);
}
#define malloc(x) counting_malloc(x)
#define free(x) counting_free(x)