때는 바야흐로 2022년 7월,

libft를 끝내고 호기롭게 ft_printf를 다음 프로젝트로 정한 7기 카뎃이 있었다.

평소와 다름없이 서브젝트를 읽어나가는데….

Don’t implement the buffer management of the original printf()!

그는 위와 같은 문장을 마주하게 된다!!!


이때까지만 해도 “버퍼”란 실재하는 메모리 공간이라기 보단 프로그램 내에서(알고리즘 내에서) 임시로 사용하는 데이터를 저장하는 공간인 줄 알았습니다.

사실은 그냥 제 OS 지식이 부족했던 거죠.

printf는 buffer라고 불리는 임시 공간(실제 하드웨어 메모리)에 결과물을 보냅니다. 그리고 일정 조건이 충족되면, 그 결과물을 스크린에 출력합니다.

버퍼에 있는 데이터가 스크린에 출력되는 표준 C 조건은 매우 명확합니다.

  1. 버퍼가 가득 차거나 (stdio에 정의 된 BUFSIZE는 디폴트로 256바이트)
  2. 개행이 들어오거나