1

我正在尝试将旧版 32 位代码移植到 64 位。我们有一个这样的工会:

union ptType
{
    int * iPtr;
    short * sPtr;
    long * lPtr;
    bool * bPtr;
    double * dPtr;
};

你可以猜到,这个联合用于存储所有这些类型的地址。我已经阅读了很多关于 64 位指针大小和算术变化的信息。但我不太确定这种行为。这段代码似乎在 QA 中工作,但我对生产更加担心,因为它会在那里产生巨大的流量。

移植到 64 位将如何影响代码的行为?

4

1 回答 1

3

没错,在大多数 32 位到 64 位的转换下,这些指针的大小都会翻倍。这个联合本身的操作不太可能成为问题,但是您必须注意它与其他代码交互的地方,通过类型转换、硬编码大小等。

于 2013-03-31T14:59:17.727 回答