2 ints, 2 shorts 및 1 char 씩 차례로 복사하고 싶습니다.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