msvcrXXXX.dll - это DLL для библиотеки времени выполнения C.
msvcpXXXX.dll - это библиотека DLL для библиотеки времени выполнения C ++.
Одна или обе эти зависимости будут добавлены в ваш двоичный файл, если вы строите с использованием / MD или / MDd, которые являются значениями по умолчанию, указанными Visual Studio при создании нового проекта C ++. Использование любого из этих флагов означает, что вы хотите, чтобы ваша программа связывалась с версией DLL среды выполнения C / C ++. Вы можете изменить значения по умолчанию в Свойствах проекта-> Свойства конфигурации-> C / C ++ / Генерация кода / Библиотека времени выполнения.
Если вы измените свой проект на использование / MT или / MTd, то ваше приложение не будет генерировать ссылки ни на одну из перечисленных выше библиотек DLL, поскольку среды выполнения C / C ++ будут связаны непосредственно с вашей программой. Для большинства простых программ это не вызовет никаких проблем. Однако, если ваша программа разбита на несколько библиотек DLL, все из которых построены с использованием этих флагов, то каждая библиотека DLL будет хранить копию ссылочных функций CRT и статических данных, и вы можете столкнуться с проблемами выделения / освобождения памяти. Чтобы избежать этого, вам нужно убедиться, что объекты, размещенные в данной DLL, также освобождены в этом же модуле.
В целом, более эффективно использовать флаги / MD и / MDd для приложений, которые имеют несколько модулей (DLL), потому что все эти модули будут совместно использовать одну копию библиотек времени выполнения C / C ++ и связанных с ними данных структуры в процессе подачи заявки.
Для простых одно-модульных приложений, не стесняйтесь создавать с использованием / MT или /MTd.