unsigned char byte; unsigned short word;
byte *bptr = (byte*) 0x1234; word *wptr = (word*)0x1234;
bptr++; wptr++;
bptr==? wptr==?
각각 0x0000,0x1235 맞나요?
virtual memory에서 0x1234를 가리키도록 할 수 없을 것이기 때문에 제대로 실행되지 않겠지만 특수한(?) 상황이라면 bptr은 0x1234 + sizeof(byte) 만큼 증가한 값이 되고 wptr은 0x1234 + sizeof(word) 만큼 증가한 값이 됩니다.
그러면 0x1235,0x1236이 되는건가요?
거의 그렇게 되겠네요. 모든 시스템(32bit, 64bit OS)에서 (unsigned) char는 1 byte이고 (unsigned) short는 2 byte의 사이즈를 가지니까요.
http://wiki.kldp.org/wiki.php/32bitCodeTo64bit 여기를 참고해 보세요.
virtual memory에서 0x1234를
virtual memory에서 0x1234를 가리키도록 할 수 없을 것이기 때문에 제대로 실행되지 않겠지만 특수한(?) 상황이라면
bptr은 0x1234 + sizeof(byte) 만큼 증가한 값이 되고
wptr은 0x1234 + sizeof(word) 만큼 증가한 값이 됩니다.
감사합니다.
그러면 0x1235,0x1236이 되는건가요?
거의 그렇게 되겠네요.
거의 그렇게 되겠네요.
모든 시스템(32bit, 64bit OS)에서 (unsigned) char는 1 byte이고 (unsigned) short는 2 byte의 사이즈를 가지니까요.
http://wiki.kldp.org/wiki.php/32bitCodeTo64bit
여기를 참고해 보세요.