struct _tagTEST
{
short A; // 2byte
int B[10]; // 40byte
}
32bit 운영체제는 최적화를 위해 4byte 단위로 메모리를 관리한다.
그러므로, A와 B는 순차적으로 메모리상에 할당되지 않고,
2byte(A)+ 2byte(Temp) + 40byte(B array) 존재하게 된다.
_tagTEST 구조체의 정확한 바이트수를 안다하더라도 memcpy 등 메모리 상의 있는 값을 그대로 덮을 경우
의도하지 않는 문제가 발생 할 수 있다.
해결방법은!
1. short 를 int로 하여 4byte단위로 구성한다.
2. 구조체 내에서 byte 수가 가장 큰 맴버를 가장 위에 배치한다. 변수A -> 배열B (X) / 배열B -> 변수A (O)
다른 방법은 또 뭐가 있을까?
32bit 운영체제는 최적화를 위해 4byte 단위로 메모리를 관리한다.
그러므로, A와 B는 순차적으로 메모리상에 할당되지 않고,
2byte(A)+ 2byte(Temp) + 40byte(B array) 존재하게 된다.
_tagTEST 구조체의 정확한 바이트수를 안다하더라도 memcpy 등 메모리 상의 있는 값을 그대로 덮을 경우
의도하지 않는 문제가 발생 할 수 있다.
해결방법은!
1. short 를 int로 하여 4byte단위로 구성한다.
2. 구조체 내에서 byte 수가 가장 큰 맴버를 가장 위에 배치한다. 변수A -> 배열B (X) / 배열B -> 변수A (O)
다른 방법은 또 뭐가 있을까?
'비공개' 카테고리의 다른 글
GetLastError() 활용 (0) | 2011.05.12 |
---|---|
BMW, ‘믿기힘든 연비 운전 기술’ 7가지 공개 (0) | 2011.05.09 |
심층 면접 법 (0) | 2011.04.04 |
클라이딩 컴퓨팅 & 서비스 (0) | 2011.02.16 |
카드가 말하지 않는 23가지 (0) | 2011.01.27 |