Я работаю над инструментом трассировки для многопоточных приложений, особенно над распределением памяти.
Я хотел бы выделить память для каждого потока. Я знаю, что когда поток выполняет malloc, используемая память является глобальной кучей. Я хотел бы проследить, какой поток выделил, сколько памяти.
Я сделал обертку для malloc, увеличивая значения каждый раз, когда есть malloc как:
void *mymalloc(size_t size) {
mem_used[thread_id] += size;
return malloc(size);
}
Хорошо работает. Проблема в методе free
, который не возвращает объем освобожденной памяти.
Не принимайте во внимание мое решение, оно просто показывает, что я пытался.
EDIT:
Как упомянуто выше, хранить мой собственный стол - слишком сложный метод.