비공개2011. 4. 27. 11:37

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)

다른 방법은 또 뭐가 있을까?

'비공개' 카테고리의 다른 글

GetLastError() 활용  (0) 2011.05.12
BMW, ‘믿기힘든 연비 운전 기술’ 7가지 공개  (0) 2011.05.09
심층 면접 법  (0) 2011.04.04
클라이딩 컴퓨팅 & 서비스  (0) 2011.02.16
카드가 말하지 않는 23가지  (0) 2011.01.27
Posted by 닭꽝