我已经将一款软件的源代码(使用c语言编写)从32位移植到了64位,但该软件并不支持64位。主要问题是指针相关的,需要把包含指针的整数改为长整型,并在比较时使用类型转换等。然而,我不知道如何进行测试。由于指针的大小加倍了,我推断只有当指向的地方的位置大于0x0...0100000000(1后面有8个零)时才会产生影响,但我该如何保证这一点呢?应该在我的虚拟机(OpenBSD)中运行多个程序来填充内存基址,还是有其他可靠的方法?
总之:如何测试代码以确保在amd64上没有(基于指针的)内存错误?
总之:如何测试代码以确保在amd64上没有(基于指针的)内存错误?
int
变量中的可能指针改为long
而不是正确的指针?这尤其重要,因为long
不一定是64位,例如Microsoft的Visual C++编译器在64位系统上仍然将long
作为32位。 - Some programmer dudeif( (int) pointer1 < (int) pointer2)
更改为if( (long) pointer1 < (long) pointer2)
或者将整数变量 "temp" 定义为长整型变量temp = pointer3;
。如有需要,我可以提供差异文件。我只是想知道是否仍然存在基于架构的内存错误。 - Gökhan