alloc, free, create, destroy
핵심 할당자 작업을 알아봅니다.
alloc, free, create, destroy은(는) CoddyKit의 무료 Zig Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Zig Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
네 가지 핵심 연산
할당자는 네 가지 핵심 호출을 제공합니다. 여러 항목에는 alloc과 free를 사용하고, 하나의 값에는 create와 destroy를 사용합니다.
alloc은 슬라이스를 반환합니다
alloc을 사용해 여러 항목이 이어진 공간을 요청합니다. 요소 타입과 개수를 전달하면 해당 개수만큼의 요소를 담은 슬라이스를 돌려받습니다.
const buf = try a.alloc(u8, 64);alloc은 실패할 수 있습니다
힙의 메모리가 부족해질 수 있으므로 alloc은 오류 유니언을 반환합니다. try 키워드가 OutOfMemory 상황을 깔끔하게 처리해 줍니다.
const list = try a.alloc(i32, 10);free로 반환합니다
작업이 끝나면 얻은 슬라이스를 정확히 그대로 free에 전달해 호출합니다. 이를 잊으면 GeneralPurposeAllocator가 메모리 누수를 보고합니다.
a.free(buf);즉시 defer free하기
일반적인 습관은 alloc이 성공한 직후 defer a.free를 작성하는 것입니다. 그러면 범위를 어떤 방식으로 벗어나도 정리가 실행됩니다.
const buf = try a.alloc(u8, 64);
defer a.free(buf);하나의 값에는 create
힙에 값 하나만 필요할 때는 create를 사용합니다. 타입을 전달하면 새 메모리를 가리키는 단일 항목 포인터를 반환합니다.
const node = try a.create(Node);포인터를 통해 쓰기
create는 포인터를 반환하므로, 포인터가 가리키는 데이터를 사용하기 전에 .*를 통해 그 값을 설정합니다.
node.* = Node{ .value = 42 };포인터 destroy하기
생성한 값은 destroy로 해제하고, create가 반환한 것과 같은 포인터를 전달합니다. 이는 create와 짝을 이루는 호출입니다.
a.destroy(node);쌍 맞추기
규칙은 엄격합니다. alloc은 free와 짝을 이루고 create는 destroy와 짝을 이룹니다. 절대로 서로 바꾸어 사용하거나 직접 할당하지 않은 슬라이스를 free하지 마세요.
같은 할당자로 해제하기
메모리는 항상 메모리를 만든 같은 할당자를 사용해 해제하세요. 할당자를 섞으면 컴파일러가 감지할 수 없는 손상이 발생합니다.
오류가 발생하면 defer 본문을 건너뜁니다
alloc 자체가 실패하면 메모리가 만들어지지 않았으므로 해제할 것이 없습니다. 따라서 defer free는 alloc이 성공한 뒤에 작성합니다. ✅
빠른 확인
각 할당 호출을 올바른 해제 호출과 연결해 보세요.
복습
슬라이스에는 alloc/free를, 단일 값에는 create/destroy를 사용하며, 항상 같은 할당자로 해제한다는 쌍의 규칙을 배웠습니다. 🎯
자주 묻는 질문
“alloc, free, create, destroy” 강의는 무료인가요?
네 — “alloc, free, create, destroy” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Zig Academy 강의 전체를 잠금 해제할 수 있습니다. Zig Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“alloc, free, create, destroy”에서 뭘 배우나요?
핵심 할당자 작업을 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 Zig Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Zig Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Zig Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“alloc, free, create, destroy” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Zig Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Zig Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Zig에 숨은 할당이 없는 이유
- 할당자 인터페이스
- alloc, free, create, destroy
- ArrayList를 사용하는 동적 목록