これは 32 ビット アプリケーション用であると想定します。特定のオブジェクトを一意に識別する 2 つの ID 値があります。各 ID は単純な 32 ビットの int であるため、特定のオブジェクトを識別するには、両方の ID 値を一緒に保持する必要があります。
頭に浮かぶ最初の解決策は、それらを 2 つの個別の値として格納し、それらを構造体で渡すことです。
struct {
int id1;
int id2;
};
ただし、32 ビットの ID 値が 1 つしかなかったときに行ったように、それらを構造体のペアではなく、1 つの値として渡すことができれば便利です。
したがって、別のアイデアは、それらを uint64_t の上半分と下半分として格納することです。
私の質問は、2 つの方法の間に実際の違いはありますか? いずれにせよ、同じバイト数が渡されますが、CPU は 64 ビット値をネイティブに処理しないため、int64 に特別なオーバーヘッドがあるかどうかはわかりません。