﻿# Why is it so hard to create a 64\-bit version of an application?

Unfortunately, despite the seeming simplicity, it is often not enough just to rebuild a 32\-bit program for a 64\-bit platform and fix compiler errors to provide assured operability of the application being ported\. The main issue of migrating to 64 bits is the presence of hidden 64\-bit errors, i\.e\. cases when a code fragment that worked correctly in the 32\-bit version causes errors in the 64\-bit version\.

Most often 64\-bit errors occur in the following code fragments:

* code based on incorrect assumptions about types' sizes \(for instance, on the assumption that the pointer's size is always 4 bytes\);
* code processing large arrays whose sizes exceed 2 Gbytes in 64\-bit systems;
* code writing and reading data;
* code containing bit operations;
* code with complex address arithmetic;
* obsolete code;

You may read a detailed description of each error type in the article [A Collection of Examples of 64\-bit Errors in Real Programs](https://pvs-studio.com/en/blog/posts/cpp/a0065/)\. Although all the errors in code that reveal themselves while compiling the program for 64\-bit systems are related to inaccurate compliance with C/C\+\+ standards, no real project is secure from them\.

Another issue of moving to a 64\-bit platform is dependence of your application on the libraries that do not have 64\-bit versions since combined use of a 64\-bit program and a 32\-bit library is impossible in Windows systems\.

A detailed description of the migration process and estimate of time and cost of porting an application to a 64\-bit platform are given in [this](https://pvs-studio.com/en/blog/lessons/0028/) article\.

## References

1. Discussion at 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. Andrey Karpov, Evgeniy Ryzhkov\. [Lesson 28\. Estimating the cost of 64\-bit migration of C/C\+\+ applications](https://pvs-studio.com/en/blog/lessons/0028/)