
프로그램(Program)은 파일이지만, 프로세스(Process)는 메모리 위의 생명체다. 여러분이 컴파일한 C 프로그램(실행 파일)이 하드디스크에 저장되어 있을 때는 그저 차가운 바이너리 데이터 덩어리에 불과합니다. 하지만 이를 실행하는 순간, 운영체제(OS)의 로더

"Endianness(엔디언)는 바이트(Byte)들의 줄을 서는 순서입니다."C언어에서 int는 보통 4바이트(32비트)입니다. 하지만 메모리 주소는 1바이트 단위로 번지가 매겨집니다.그렇다면 4바이트짜리 정수 0x12345678을 메모리에 저장할 때, 가장 큰 자릿수

"CPU는 편식쟁이입니다. 아무 주소에서나 데이터를 먹지 않습니다."
"포인터의 덧셈은 수학의 덧셈이 아닙니다. '보폭(Stride)'의 이동입니다."
"배열은 '집(House)' 그 자체이고, 포인터는 '주소가 적힌 쪽지(Note)'입니다."
"C언어의 int는 고무줄입니다. 하드웨어 제어에는 '강철 자'가 필요합니다."
"함수 포인터는 '실행할 코드의 주소'를 담는 변수입니다."
"malloc은 공짜가 아닙니다. 장부(Bookkeeping)를 관리하는 거대한 도서관 사서입니다."
"malloc은 시간 복잡도가 O(1)이 아닙니다. O(Unknown)입니다."