Odin: C언어에서 영감을 받은 현대적 최고 관행을 채택한 언어

2025-05-13
Odin: C언어에서 영감을 받은 현대적 최고 관행을 채택한 언어

저자는 C언어로 게임 엔진을 구축한 경험을 바탕으로 Odin 언어에 여러 C언어의 최고 관행이 통합되어 있음을 강조합니다. 여기에는 사용자 정의 할당자(Odin의 핵심 라이브러리에 내장 지원), 프레임 기반 메모리 관리를 위한 임시 할당자, 누수 감지를 위한 추적 할당자, 제로 초기화, 지정된 초기화자, SoA를 통한 캐시 친화적인 프로그래밍 등이 포함됩니다. Odin은 C언어의 단순성을 유지하면서 제네릭과 오버로딩과 같은 현대적인 기능을 추가합니다. 저자는 Odin의 기능이 C언어와 유사한 배경을 가진 개발자에게 매우 유익한 동시에 이러한 개념에 익숙하지 않은 개발자에게도 접근하기 쉽다는 점을 강조하며, 입문서로 자신의 책을 추천합니다.

더 보기
개발

Odin의 아레나 할당자와 동적 배열: 숨겨진 함정

2025-04-13
Odin의 아레나 할당자와 동적 배열: 숨겨진 함정

Odin에서 아레나 할당자와 동적 배열을 사용하면 미묘한 함정이 있습니다. 아레나는 동일한 수명을 갖는 메모리 할당을 효율적으로 관리하고 한 번에 모두 해제합니다. 그러나 동적 배열의 성장 메커니즘으로 인해 아레나 할당자를 사용하면 이전 메모리 블록이 해제되지 않아 메모리가 낭비됩니다. 이 글에서는 그 이유를 설명합니다. 아레나 할당자는 개별 해제를 지원하지 않으며 동적 배열의 성장으로 이전 블록의 '무덤'이 생성됩니다. 해결책으로는 기본 할당자를 사용하거나 최대 크기를 미리 할당하거나 가상으로 성장하는 아레나를 사용하는 것이 있습니다. 가상으로 성장하는 아레나는 메모리 블록의 이동을 방지하지만 잠재적인 낭비에는 대응할 수 없습니다. 이 글은 메모리 사용량이 매우 동적인 경우 아레나 할당자를 피하는 것이 현명하다고 결론짓습니다.

더 보기