Как получить общую память кучи, выделенную пользователем, когда включены AddressSanitizer или ThreadSanitizer?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как получить общую память кучи, выделенную пользователем, когда включены AddressSanitizer или ThreadSanitizer?

Сообщение Anonymous »

Я хочу получить объем динамической памяти, выделенной с помощью mallinfo2():

Код: Выделить всё

/*
* 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 (

Код: Выделить всё

gcc -std=c99 main.c && ./a.out
или g++ -std=c++11 main.cpp && ./a.out), это может дать мне правильный результат:

Код: Выделить всё

Heap memory used: 65552
Однако, когда я использую AddressSanitizer или ThreadSanitizer (добавьте опцию -fsanitize=address или -fsanitize=thread), это дает мне ноль:

Код: Выделить всё

Heap memory used: 0
И mem1 и mem2 равны нулю:

Код: Выделить всё

-    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 берут на себя работу функции malloc, а mallinfo2 не может предоставить выделенную память.
Тогда как я могу получить объем кучи, выделенной при включенном AddressSanitizer или ThreadSanitizer?

Подробнее здесь: https://stackoverflow.com/questions/791 ... er-or-thre
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»