Код: Выделить всё
/*
* File: main.c
*/
#include
#include
#include
size_t GetHeapMemoryUsed() {
struct mallinfo2 mi = mallinfo2();
return mi.uordblks;
}
int main(void) {
size_t mem1 = GetHeapMemoryUsed();
char *p = (char *)malloc(65536);
size_t mem2 = GetHeapMemoryUsed();
printf("Heap memory used: %zu\n", mem2 - mem1);
free(p);
return 0;
}
Код: Выделить всё
gcc -std=c99 main.c && ./a.out
Код: Выделить всё
Heap memory used: 65552
Код: Выделить всё
Heap memory used: 0
Код: Выделить всё
- printf("Heap memory used: %zu\n", mem2 - mem1);
+ printf("Heap memory used: %zu\nmem1: %zu, mem2: %zu\n", mem2 - mem1, mem1, mem2);
Код: Выделить всё
Heap memory used: 0
mem1: 0, mem2: 0
Тогда как я могу получить объем кучи, выделенной при включенном AddressSanitizer или ThreadSanitizer?
Подробнее здесь: https://stackoverflow.com/questions/791 ... er-or-thre