오늘의 질문
#08 · 14바이트짜리 24바이트
질문
도현: "char 1 + int 4 + char 1 + double 8이면 14바이트잖아요. 그런데 sizeof(struct student)가 24래요. 10바이트는 어디 간 거예요? 그리고 다들 strcpy는 쓰지 말라던데, 그냥 복사하는 함수 아니에요?"
오늘 알아낼 것
포인터는 8바이트짜리 주소 값이고, *p, p + 1, a[i], p->id가 모두 주소 계산 한 줄이라는 것을 gcc 출력으로 확인한다. 구조체의 정렬과 채움 바이트를 직접 배치해 24바이트의 정체를 찾고, 스택 위의 char buf[16]이 넘치면 무엇이 덮이는지, 스택 카나리·NX·ASLR이 그것을 어떻게 막는지 흉내 CPU와 진짜 리눅스로 본다.
새솔대 공학관 5층 실습실 · 화요일 밤 디버거 교실
10월 27일 화요일. 도현이 다른 수업 과제인 학생 명부 프로그램을 들고 왔습니다. 학생 한 명을 구조체로 만들어 파일에 그대로 쓰는데, 파일 크기가 계산과 안 맞습니다. 학생 100명이면 1,400바이트여야 하는데 2,400바이트가 나왔습니다.
은재가 거듭니다. "그 코드, 컴파일할 때 strcpy 쓰지 말라는 말도 들었다며?"
윤 조교가 화이트보드에 p->id라고 씁니다. "오늘 배울 건 하나야. 포인터든 배열이든 구조체든, 기계어에서는 전부 주소 더하기야. 그걸 알면 24바이트도, strcpy가 위험한 이유도 같이 풀려."
1~3교시는 누구나 볼 수 있고, 4교시부터는 무료 회원이면 끝까지 볼 수 있어요.
로그인하면 어디까지 봤는지 저장되고, '내 강의'에서 이어 볼 수 있어요. 가입비는 없어요.
카카오에서 닉네임만 받아 와요. 개인정보 처리방침
새 교시·새 강의 소식 받기
이 강의에 새 교시가 더해지거나 이어지는 강의가 열리면 이메일로 알려 드려요.
R
ReflexKR
눌러 보며 배우는 파이썬과 Reflex. 모든 예제는 Reflex 0.10.0에서 직접 실행해 확인했습니다.
ReflexKR은 배너 광고 없이 무료로 운영돼요. 도움이 되셨다면 커피 한 잔으로 응원해 주세요.
© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
질문과 답변
이 교시에서 궁금한 점을 남겨 주세요. 모든 언어 페이지의 질문이 함께 모입니다.