msvcrt: использование памяти сходит с ума, но не под отладчиком - PullRequest
0 голосов
/ 06 мая 2010

У меня есть код C ++, скомпилированный 32-битным компилятором Intel в режиме MS VC6, поэтому я использую msvcrt.dll или msvcrtd.dll. Процесс делает тяжелое распределение памяти и освобождение. Я отслеживаю использование памяти с помощью WMI и смотрю на VirtualSize и WorkingSetSize.

с временем выполнения отладки (msvcrtd.dll): виртуальная константа 1,7 ГБ, рабочая константа 1,2 ГБ
с не отладочной средой выполнения (msvcrt.dll): виртуальное повышение 1,7 - 2,1 ГБ , рабочее повышение 1,2-1,4 ГБ
с не отладочной средой выполнения, но с отладчиком (windbg): виртуальная константа 1,7 ГБ, рабочая константа

При виртуальной частоте 2,1 ГБ процесс падает (как и ожидалось). Но почему виртуальное использование увеличивается только с (не отладочным) msvcrt.dll и только если не под отладчиком? Во всех случаях флаги компиляции идентичны, отличаются только библиотеки времени выполнения.

1 Ответ

0 голосов
/ 06 мая 2010

Часто проблема заключается в неинициализированных локальных переменных, которые обнуляются RTL отладки, но не при использовании RTL выпуска. Взгляните на «Выживание из релизной версии» и посмотрите, поможет ли это.

...