我正在开发用于多线程应用程序的跟踪工具,尤其是关于内存分配的跟踪工具。
我想要一个每个线程的内存分配。我知道当一个线程做 malloc 时,使用的内存是全局堆。我想跟踪哪个线程分配了多少内存。
我对 malloc 做了一个包装,每次有 malloc 时递增值:
void *mymalloc(size_t size) {
mem_used[thread_id] += size;
return malloc(size);
}
它运作良好。问题在于free
方法,它不返回释放了多少内存。
不要考虑我的解决方案,这只是为了展示我的尝试。
编辑:
如上所述,保留自己的桌子是一种过于繁重的方法。