试图找到答案,但找不到。我有以下 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 的大小,它增加了 12 而不是 6。我正在使用内存地址仍然存在乘法,我无法弄清楚为什么会这样。
请指教。
谢谢!