我想複製2個整數,2個短褲和1個字符一個接一個。c + + memcpy錯誤
這是我做過什麼:
int32_t a=1;
int32_t b=2;
int16_t c=3;
int16_t d=4;
int8_t e=5;
char*buf=new char[104];
memcpy(buf, &a, 32);
memcpy(buf + 32, &b, 32);
memcpy(buf + 64, &c, 16);
memcpy(buf + 80, &d, 16);
memcpy(buf + 96, &e, 8);
這是正確的嗎?我的調試器說第三行影響第二行,但也許我只是濫用我的調試器(更具體地說,它表示*((int32_t *)(buf + 32))的值在第二個和第三個memcpy之間改變) 。
謝謝。
使用'sizeof'和'offsetof'宏。 – Ben 2012-07-09 13:35:43