alloc — 전역 할당자로 메모리 할당하기

alloc — 전역 할당자로 메모리 할당하기

alloc은 Rust의 전역 할당자(global allocator) 로 메모리를 할당하는 함수예요. #[global_allocator] 속성으로 등록된 할당자가 있으면 그 할당자의 GlobalAlloc::alloc 메서드를 호출하고, 없으면 std 크레이트의 기본 할당자를 사용해요. 나중에 Global 타입의 allocate 메서드가 안정화되면 이 함수는 deprecated 될 예정이에요.

출처: Rust 공식 문서

본문

pub unsafe fn alloc(layout: Layout) -> *mut u8

반환된 포인터가 널(null)인지 직접 확인해야 하며, layout에 맞는 메모리 블록을 할당해요. 할당은 unsafe라서 호출하는 쪽에서 메모리 안전을 보장해야 해요.

Safety (안전성): GlobalAlloc::alloc 의 안전 요구사항을 그대로 따라요.

예시:

use std::alloc::{alloc, dealloc, handle_alloc_error, Layout};

unsafe {
    let layout = Layout::new::<u16>();
    let ptr = alloc(layout);
    if ptr.is_null() {
        handle_alloc_error(layout);
    }

    *(ptr as *mut u16) = 42;
    assert_eq!(*(ptr as *mut u16), 42);

    dealloc(ptr, layout);
}

더 알아보기 (Learn more)

Rust 공식 문서