В последний раз я использовал BoundsChecker несколько лет назад, и у меня были те же проблемы. В больших проектах все работает так медленно, что бесполезно. Мы закончили тем, что бросили это.
Но нам все еще нужны были некоторые его функции, но, как и вам, не для всей программы. Поэтому мы должны были сделать это сами.
В нашем случае мы в основном использовали его для обнаружения утечек памяти. Если это ваша цель, есть и другие варианты.
- Visual Studio довольно хорошо рассказывает вам об утечках памяти при выходе из программы
- Сообщает об утечках в том порядке, в котором они были созданы
- Он точно скажет вам, где была создана утечка памяти, если ваши исходные файлы имеют это в верхней части
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
Это очень помогает, но часто этого недостаточно. Добавление этого фрагмента не всегда возможно. Если вы используете фабричные классы, знание того, где была выделена память, совсем не поможет. Таким образом, когда все остальное терпит неудачу, мы используем преимущество # 2.
Добавьте что-то вроде следующего:
#define LEAK(str) {char *s = (char*)malloc(100); strcpy(s, str);}
Затем добавьте в код свой код "LEAK (" leak1 ");" или что угодно. Запустите программу и закройте ее. Ваши новые пропущенные строки будут отображаться в дампе утечек Visual Studio, окружающем существующие утечки. Продолжайте добавлять / перемещать свои выражения LEAK и перезапускать программу, чтобы сузить область поиска, пока вы не укажете точное местоположение. Затем исправьте утечку, устраните утечки при отладке, и все готово!