Исправление: Нарушение прав доступа при запуске приложения Visual C++ 2010 для платформ на базе x64 при использовании «/ O2» параметр компилятора для построения проекта

Применимо к: Visual Studio 2010

Проблемы


Рассмотрим следующий сценарий.
  • Уже существует проект Visual C++ 2010. Исходный код проекта была структура или класс, который превышает 64 байта.
  • Построение проекта для платформы на базе x64 и используйте параметр компилятора/O2
  • Запустите приложение.
В этом случае происходит нарушение прав доступа и завершает работу приложения.

Причина


Эта проблема возникает, поскольку Visual Studio 2010 компилятор на основе x64 оптимизирует код путем настройки выравнивания распределения данных из 64 байта на 16 байт. Таким образом проблемы памяти выполняется для объектов, размер которых превышает 64 байта.

Решение


Сведения об исправлении

Существует исправление от корпорации Майкрософт. Однако данное исправление предназначено для устранения только проблемы, описанной в этой статье. Применяйте данное исправление только в тех системах, которые имеют данную проблему. Это исправление может проходить дополнительное тестирование. Таким образом если вы не подвержены серьезно этой проблеме, рекомендуется дождаться следующего пакета обновления, содержащего это исправление. Чтобы загрузить это исправление из коллекции кода MSDN, посетите следующий веб-узел корпорации Майкрософт: Примечание. Коллекции кода MSDN отображаются языки, для которых доступно исправление. Если в списке язык не отображается, это недоступности страница коллекции кода для этого языка. Примечание. Если наблюдаются другие проблемы или необходимо устранить неполадки, вам может понадобиться создать отдельный запрос на обслуживание. Стандартная оплата за поддержку будет взиматься только за дополнительные вопросы и проблемы, которые не соответствуют требованиям конкретного исправления. Для получения полного списка телефонов поддержки и обслуживания клиентов корпорации Майкрософт, или для создания отдельного запроса на обслуживание, посетите следующий веб-сайт Майкрософт: Это исправление можно загрузить, посетив следующий веб-узел корпорации Майкрософт:

Предварительные условия

Это исправление необходимо установить Visual Studio 2010.

Требование перезагрузки

Необходимо перезагрузить компьютер после установки исправления.

Сведения о замене исправлений

Это исправление не заменяет других исправлений.

Сведения о файлах

Английская версия исправления содержит файлы с атрибутами, указанными в следующей таблице, или более поздние. Даты и время для файлов указаны в формате времени UTC. При просмотре сведений о файлах выполняется перевод соответствующих значений в местное время. Чтобы узнать разницу между временем по Гринвичу и местным временем, откройте вкладку часовой пояс элемента Дата и время панели управления.
Имя файлаВерсия файлаРазмердатаВремяПлатформа
C2.dll16.0.30319.3452,510,14401-Aug-201023:42x86
C2.dll16.0.30319.3452,588,48001-Aug-201023:42x86
C2.dll16.0.30319.3452,630,97601-Aug-201023:42x86
C2.dll16.0.30319.3452,977,08801-Aug-201023:42x64
C2.dll16.0.30319.3457,351,61601-Aug-201023:42IA-64

Обходное решение


Чтобы обойти эту проблему, не используйте параметр компилятора/O2 при построении проекта.

Статус


Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".