Профилирование выделения памяти в C++

Попробуйте это:

If(string.IsNullOrEmpty(textbox1.Text) 
   && string.IsNullOrEmpty(textbox2.Text)
   && string.IsNullOrEmpty(textbox3.Text))
{
     Messagebox.Show("You need to fill all fields in");
}
else
{
     Messagebox.Show("You have successfully registered");
}
39
задан amit 31 March 2009 в 05:16
поделиться

9 ответов

Вы попробовали Valgrind? Это - профильный инструмент для Linux. Это имеет средство проверки памяти (для утечек памяти и других проблем памяти) названный Memcheck, но это имеет также профилировщика "кучи" под названием Горный массив.

15
ответ дан James Adkison 27 November 2019 в 02:48
поделиться

Для простой статистики, только для обнаружения, где вся память используется Вы могли добавить шаблон как это:

template<class T>
class Stats {
  static int instance_count;
public:
  Stats() {
    instance_count++;
  }
  ~Stats() {
    instance_count--;
  }
  static void print() {
    std::cout << instance_count << " instances of " << typeid(T).name() <<
        ", " << sizeof(T) << " bytes each." << std::endl;
  }
};

template<class T>
int Stats<T>::instance_count = 0;

Затем можно добавить это как базовый класс к классам, которые Вы подозреваете, чтобы иметь много экземпляров и распечатать статистику текущего использования памяти:

class A : Stats<A> {
};

void print_stats() {
  Stats<A>::print();
  Stats<B>::print();
  ...
}

Это не показывает Вам, в которых функциях были выделены объекты, и не предоставляет слишком много подробной информации, но это могло бы меня достаточно для определения местоположения, где память потрачена впустую.

9
ответ дан sth 27 November 2019 в 02:48
поделиться

Поскольку окна проверяют функции в "crtdbg.h". crtdbg.h содержит отладочную версию функций выделения памяти. Это также содержит функцию для обнаружения утечек памяти, повреждений, проверки законности указателей "кучи", и т.д.

Я думаю после функций, будет полезно для Вас.

_CrtMemDumpStatistics _CrtMemDumpAllObjectsSince

Следующие списки ссылок MSDN состояние "кучи" Сообщающие функции и пример кода http://msdn.microsoft.com/en-us/library/wc28wkas (По сравнению с 80) .aspx

8
ответ дан Nitin Bhide 27 November 2019 в 02:48
поделиться

Можно попробовать Блок проверки допустимости Памяти из http://www.softwareverify.com/cpp/memory/index.html

Это - один из лучших инструментов, с которыми я столкнулся для профилирования использования памяти. Пробная версия 30 дней доступна для бесплатной загрузки.

5
ответ дан Canopus 27 November 2019 в 02:48
поделиться

В предыдущем задании мы использовали инструмент под названием, "Очищают". Это - продукт, сделанный Рациональным / IBM. Я не думаю, что это - бесплатный инструмент, но я помню это являющийся довольно хорошим. Вот некоторая информация:

http://en.wikipedia.org/wiki/IBM_Rational_Purify

1
ответ дан Andy White 27 November 2019 в 02:48
поделиться

Существует несколько вещей, которые можно сделать. Самая простая вещь состоит в том, чтобы связать отладку malloc библиотека; существует aa количество их доступно, в зависимости от деталей Вашей среды (например, Google для _malloc_dbg для Windows.)

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

3
ответ дан Charlie Martin 27 November 2019 в 02:48
поделиться

Глава 1.10 из Игры, Программируя Объем Драгоценных камней 2 (ссылка Amazon) детализирует простого, но эффективного Общедоступного Диспетчера памяти Отладки Peter Dalton, который обеспечивает достойный набор статистики, когда Вы выводите журнал.

1
ответ дан Michael Burr 27 November 2019 в 02:48
поделиться

Просто видел на сайте AQtime, что у них есть хорошая поддержка "Профилирования Выделения".

0
ответ дан amit 27 November 2019 в 02:48
поделиться

Глава 4.6 из Game Programming Gems Volume 8 (ссылка на предварительный просмотр Safari Book) подробно описывает расширенный профилировщик памяти от Рики Лунга, который может отображать статистику распределения в иерархической стека вызовов, но поддерживает многопоточность.

1
ответ дан 27 November 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: