﻿# Почему создание 64\-битной версии программы может быть не простым делом?

К сожалению, несмотря на кажущуюся простоту, простой пересборки 32\-битной программы под 64\-битную платформу и исправления ошибок компилятора зачастую бывает недостаточно для обеспечения гарантированной работоспособности переносимого приложения\. Основной проблемой при миграции на 64 бита является наличие в коде скрытых 64\-битных ошибок, т\.е\. таких ситуаций, когда фрагмент кода, успешно работавший в 32\-битном варианте, приводит к возникновению ошибки в 64\-битной версии приложения\.

Наиболее часто 64\-битные ошибки проявляют себя в следующих участках кода:

* код, основанный на некорректных представлениях о размере типов \(например, что размер указателя всегда равен 4 байтам\);
* код, обрабатывающий большие массивы, размер которых на 64\-битных системах превышает 2 гигабайта;
* код записи и чтения данных;
* код с битовыми операциями;
* код со сложной адресной арифметикой;
* старый код;

Детальное описание данного типа ошибок доступно в статье [Коллекция примеров 64\-битных ошибок в реальных программах](https://pvs-studio.ru/ru/blog/posts/cpp/a0065/)\. И хотя в конечном итоге все ошибки в коде, проявляющие себя при компиляции для 64\-битных систем, связаны с неточным следованием идеологии стандарта языка Си/Си\+\+, ни один реальный проект от них не застрахован\.

Другой проблемой при миграции на 64\-битную платформу может стать зависимость приложения от библиотек, не имеющих 64\-битных версий, поскольку совместное использование 64\-битной программы и 32\-битной библиотеки в операционных системах семейства Windows невозможно\.

Подробное описание процесса миграции и оценка времени и стоимости переноса программы на 64\-битную платформу рассмотрены в [данной](https://pvs-studio.ru/ru/blog/lessons/0028/) статье\.

## Библиографический список

1. Обсуждение на сайте www\.stackoverflow\.com\. [Why is it so hard to make 64\-bit versions of software?](https://stackoverflow.com/questions/3629336/why-is-it-so-hard-to-make-64-bit-versions-of-software)
1. Андрей Карпов, Евгений Рыжков\. [Урок 28\. Оценка стоимости процесса 64\-битной миграции Си/Си\+\+ приложений](https://pvs-studio.ru/ru/blog/lessons/0028/)