We begin with Static code analyzers. Oddly, despite its great potential, long-term development and use practice, static analyzers were poorly prepared to find bugs in 64-bit programs. Consider the situation on the example of C + + code as an area where static analyzers are most widely used. Many static analyzers support a number of rules associated with the search code with incorrect behavior when transferring it to the 64-bit systems. But they realize this is a very disparate methods and very incomplete. This is particularly evident after the beginning of mass development of applications for 64-bit version of Windows in Environment Microsoft Visual C + + 2005.
Explanation for this may be the fact that the majority of inspections are based on rather old material for the study of problems of porting programs to 64-bit systems in terms of C language. As a result, a number of designs have appeared in C + +, has been deprived of attention from the viewpoint of control and portability not found its reflection in the analyzers. Does not take into account a number of other changes, such as, for example, significantly increased the amount of memory and use different compilers different data models (LP64, LLP64, ILP64 11). For clarity, we consider a couple of examples: double * DoubleArray; unsigned Index = 0; while () DoubleArray Index + + = 1.0f; get a warning on the code like you do not succeed, even those powerful analyzers as Parasoft C + + test () and Gimpel Software PC-Lint ().