OpenDiary

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ OpenDiary ] in KIDS
글 쓴 이(By): zilch (_)
날 짜 (Date): 2006년 2월 22일 수요일 오후 09시 21분 24초
제 목(Title): 바보 형제


오늘 붙잡고 있던 문제는 어떻게 하면 기존의 코드를 덜
고치고 간단한 수정 만으로 원하는 작업을 수행할 수 있을까
라는 것이었다.

코드는 모두 C로 작성되어 있어서 간단한 포인터 꼼수로
해결하려고 했다. 그런데, 역시 나이가 나이인지라 
확신이 들지 않아서 다음과 같은 코드를 테스트했다.

char (*x)[10];
x = (char (*)[10]) malloc(10 * 2);

이것을 동료에게 보여주니, 그 친구는 완전히 다르게 해석한다.
x[1]은 x[0] 시작점으로부터 +4 byte 만큼 떨어져 있다는 것이다.
나의 의도는 물론 x[0..1][0..9] 의 "진짜" 2차원 배열을 실행중에
할당하는 것이다. (10 byte 차이가 나야 한다)

x[0]과 x[1]의 주소를 찍어 보면 누가 맞는지 알 수 있다.
결과는 8과 12가 나왔다. 

말도 안되는 일이라고 생각하여, K&R C 책을 꺼내 들고 한참
토론한 다음에 결국 내 말이 맞다고 이해시켰다.

그러면 도대체 8과 12는 어떻게 된 것인가?




화면을 물끄러미 바라보던 둘은 동시에 무슨 일인지 깨달았다.





그건.. 16진수였다.
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.