저는 멀티 스레드 응용 프로그램을위한 추적 도구, 특히 메모리 할당에 대해 작업하고 있습니다.스레드 당 메모리 할당
스레드 별 메모리 할당이 필요합니다. 스레드가 malloc을 수행 할 때 사용되는 메모리는 전역 힙이라는 것을 알고 있습니다. 얼마나 많은 메모리를 할당했는지 추적하고 싶습니다.
void *mymalloc(size_t size) {
mem_used[thread_id] += size;
return malloc(size);
}
그것은 잘 작동 :
나는 같은 malloc에이 값을 매번 증가, malloc에 따라 래퍼를했다. 문제는free
메서드에서 발생합니다.이 메서드는 해제 된 메모리 양을 반환하지 않습니다.
내 솔루션을 고려하지 말고, 내가 시도한 것을 보여 주기만하면됩니다.
편집 :
내 자신의 테이블이 너무 무거운 방법입니다 유지, 위 했나요한다.
당신은 free()에 전달해야하는 주소가 'mymalloc()에서 반환 된 주소'인 myfree()에서 메모리 영역을 할당하고 '할당 된 영역 주소'+ 2 * sizeof (int)는 'imem'입니다. –
좋은 해결책, 나는 그것을 좋아한다! 감사 –