重複の可能性:
C++ のポインター演算では、バイトのインクリメントではなく sizeof(type) のインクリメントが使用されますか?
答えを見つけようとしましたが、できませんでした。次の C++ コードがあります。
struct A {
uint16_t a;
uint16_t b;
uint16_t c;
}
int main() {
uint16_t * B = new uint16_t[5000];
for (int i=0;i<5000;i++)
B[i] = i;
uint16_t * D = &B[500]+sizeof(A);
}
質問: この後、なぜ *D=512 なのですか? sizeof(A) = 6 をデバッグすると、本来あるべき状態になります。それでも、B [500] のメモリ アドレスに A のサイズを追加すると、6 ではなく 12 が追加されます。
お知らせ下さい。
ありがとうございました!