Как вы оцениваете потребление памяти? - PullRequest
5 голосов
/ 23 августа 2011

Я хотел бы знать, существует ли эффективный способ измерения фактического потребления памяти конкретной структурой данных C.

Цель состоит в том, чтобы сделать тесты, основанные на том, как изменяется использование памяти после определенных операций с этими структурами данных.

Я не ищу способ подсчитать количество используемых объектов; Я хочу точно знать, насколько большим может быть использование памяти объектом, подвергнутым стрессу.

Есть ли стандартный способ сделать это, либо в коде C, либо извне? (Некоторым эквивалентом утилиты time (1) будет начало).

Очевидно, я мог бы отследить каждый указатель и сделать сумму всех sizeof с. Если это единственный способ, пожалуйста, скажите мне. Интересно, есть ли более простой способ? Или, может быть, библиотека, чтобы сделать это для меня.

Ответы [ 3 ]

2 голосов
/ 23 августа 2011

Если вы хотите контролировать использование памяти программой на глобальном уровне, вы можете заменить new/delete в C ++ или malloc/free в C вашими собственными функциями и зарегистрировать использование памяти.

2 голосов
/ 23 августа 2011

В Unix для потребления памяти вы можете использовать valgrind с инструментом Massif (+ любой инструмент визуализации), но я не знаю, подходит ли он для вашей проблемы, так как он даст вам детальное представление обо всем потреблении памяти ваша программа.

0 голосов
/ 23 августа 2011

Да, cnicutar, в Linux у вас есть pmap или, может быть, даже pstat.

На MS есть множество инструментов профилирования для VStudio в зависимости от вашего вклада в машину MS (даже бесплатные для использования строки cmd).Назовите меня зеленым рогом, у меня нет проблем с утечками памяти.

...