У меня есть код 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 и только если не под отладчиком?
Во всех случаях флаги компиляции идентичны, отличаются только библиотеки времени выполнения.