|
|
|
Enabling Memory Leak Detection
|
|||
|---|---|---|---|
|
#18+
В MSDN'e говорится: чтобы обнаружить утечки памятивключите в программу след. строки: Код: plaintext 1. 2. Директивы #include должны идти в указанном порядке. Когда программа выполняется под управлением отладчика, _CrtDumpMemoryLeaks отображает информацию об утечках памяти на вкладке Debug окна Output. Эта информация выглядит примерно так: Код: plaintext 1. 2. 3. 4. т.е. мне должно быть видно в каком модуле произошла утечка и в какой строке и т.п., а реальная картина такова: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. т.е. я вижу что все leaks имели место быть в отладочном модуле crtdbg.h, а мне нужно видеть в моих исходниках. Кто-нибудь знает в чем здесь дело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2006, 19:28 |
|
||
|
Enabling Memory Leak Detection
|
|||
|---|---|---|---|
|
#18+
Мне как раз и нужно найти в программе утечки памяти, для чего нужно видеть в каких местах происходило ее выделение, а способ описанный в MSDN не дает такой инфы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 13:47 |
|
||
|
Enabling Memory Leak Detection
|
|||
|---|---|---|---|
|
#18+
Нашел в RSDN: Имена файлов и номера строк Как вы уже знаете, в заголовке каждого блока памяти предусмотрено место для хранения имени файла и номера строки, в которой произошло распределение этого блока. Но чтобы туда записались правильные значения, необходимо проделать дополнительную работу. Стандартные версии malloc и new не передают DCRT никаких параметров, кроме размера распределяемого блока. Поэтому в отладочной версии программы лучше всего отказаться от них, заменив их на прямые вызовы функций DCRT. О замене функций malloc, calloc и т. п. их отладочными эквивалентами заботится заголовочный файл crtdbg.h. Нужно только определить перед его включением макрос _CRTDBG_MAP_ALLOC, который делает активным следующий код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Об операторе new придётся позаботиться самостоятельно. В DCRT реализована отладочная версия оператора new: void *operator new( unsigned int cb, int nBlockUse, const char *szFileName, int nLine ); Необходимо перенаправить все обращения к new на эту версию. Для этого включите в программу следующий фрагмент. Код: plaintext 1. 2. 3. 4. 5. После этого каждый выделяемый в программе блок будет сопровождаться корректной информацией о файле и строке, в которой произошло выделение. Диагностические сообщения DCRT станут более осмысленными, и отладка заметно упростится. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 15:32 |
|
||
|
Enabling Memory Leak Detection
|
|||
|---|---|---|---|
|
#18+
Но стало отображать только утечки в главном модуле ((( а остальные также анонимы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 15:48 |
|
||
|
Enabling Memory Leak Detection
|
|||
|---|---|---|---|
|
#18+
Нужно добавлять в начало каждого модуля: Код: plaintext 1. 2. 3. 4. 5. или в stdafx.h, но тогда могут возникнуть ошибки, например если пользуется STL или свои перегруженные new ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 16:16 |
|
||
|
Enabling Memory Leak Detection
|
|||
|---|---|---|---|
|
#18+
TubrikМне как раз и нужно найти в программе утечки памяти, для чего нужно видеть в каких местах происходило ее выделение, а способ описанный в MSDN не дает такой инфы. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 18:17 |
|
||
|
Enabling Memory Leak Detection
|
|||
|---|---|---|---|
|
#18+
hell TubrikМне как раз и нужно найти в программе утечки памяти, для чего нужно видеть в каких местах происходило ее выделение, а способ описанный в MSDN не дает такой инфы. IBM® Rational® PurifyPlus™ is a runtime analysis solution designed to help developers write faster, more reliable code. Runtime analysis includes four basic functions: memory corruption detection, memory leak detection, application performance profiling, and code coverage analysis. Rational PurifyPlus packages support for all four of these functions in a single product with a common install and licensing system. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2006, 18:17 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33880055&tid=2030785]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 438ms |

| 0 / 0 |
