Как измерить потребление памяти функцией в с++?

Пользователь

от maya , в категории: C/C++ , 8 месяцев назад

Как измерить потребление памяти функцией в с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от karen.wisozk , 8 месяцев назад

@maya 

В C++ нет стандартного способа измерения потребления памяти функцией. Однако существуют некоторые инструменты и библиотеки, которые могут помочь в измерении потребления памяти.


Один из популярных инструментов - это Valgrind, который предоставляет набор утилит, включая memcheck, massif и другие. Massif является инструментом, предназначенным для анализа потребления памяти программой. Более подробное описание использования Massif можно найти в его документации.


Еще один инструмент - это Google Performance Tools (gperftools) с библиотекой heap profiler (tcmalloc). Он предоставляет функции для измерения и анализа потребления памяти.


Кроме того, можно использовать системные функции и API для получения информации о потреблении памяти. Например, в Linux можно использовать функции malloc_usable_size() или getrusage().


Пример кода для измерения потребления памяти с помощью Valgrind и Massif:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include 

void foo() {
    int* arr = new int[100];
    delete[] arr;
}

int main() {
    foo();
    
    return 0;
}


Компиляция и запуск с использованием Valgrind и Massif:

1
2
3
g++ -g -o memory_example memory_example.cpp
valgrind --tool=massif ./memory_example
ms_print massif.out.<pid>


Выполнение этого кода с помощью Valgrind и Massif позволит получить информацию о потреблении памяти в программе. С помощью команды ms_print вы сможете просмотреть результаты измерений.