binary file

바이너리 파일은 포맷 경계를 코드로 고정한다

read와 write는 바이트를 그대로 옮기므로, 파일을 다시 읽을 코드가 크기, 순서, 플랫폼 차이를 같은 규칙으로 해석해야 한다.

padding

구조체 크기

멤버 사이 패딩 때문에 파일의 레코드 크기가 생각과 달라질 수 있다.

endian

바이트 순서

다른 CPU나 플랫폼에서 읽을 파일은 정수와 실수의 순서를 명시한다.

pointer

주소값 제외

포인터 값은 실행 중 주소일 뿐이므로 파일에 저장해도 복원 의미가 없다.

schema

버전 필드

레코드 구조가 바뀔 수 있으면 헤더에 버전을 두고 읽기 코드를 분기한다.

저장 전 질문

이 파일을 같은 컴파일러와 같은 구조체로만 읽을지, 아니면 장기 보관과 플랫폼 이동까지 고려해야 하는지에 따라 포맷 설계가 달라진다.