메모리 관리 함수Memory Management Functions

이 문서에서는 동시에 메모리를 할당 하 고 해제 하는 데 도움이 되는 동시성 런타임에서 제공 하는 메모리 관리 함수에 대해 설명 합니다.This document describes the memory management functions that the Concurrency Runtime provides to help you allocate and free memory in a concurrent manner.

동시성 런타임은 기본 스케줄러를 제공하므로 애플리케이션에서 스케줄러를 만들 필요가 없습니다.The Concurrency Runtime provides a default scheduler, and therefore you are not required to create one in your application. 작업 스케줄러는 응용 프로그램의 성능을 미세 조정 하는 데 도움이 되므로 동시성 런타임를 처음 접하는 경우 PPL (병렬 패턴 라이브러리) 또는 비동기 에이전트 라이브러리 를 사용 하는 것이 좋습니다.Because the Task Scheduler helps you fine-tune the performance of your applications, we recommend that you start with the Parallel Patterns Library (PPL) or the Asynchronous Agents Library if you are new to the Concurrency Runtime.

동시성 런타임는 동시에 메모리 블록을 할당 하 고 해제 하는 데 최적화 된 두 개의 메모리 관리 함수를 제공 합니다.The Concurrency Runtime provides two memory management functions that are optimized for allocating and freeing blocks of memory in a concurrent manner. Concurrency:: Alloc 함수는 지정 된 크기를 사용 하 여 메모리 블록을 할당 합니다.The concurrency::Alloc function allocates a block of memory by using the specified size. Concurrency:: Free 함수는 Alloc에 의해 할당 된 메모리를 해제 합니다.The concurrency::Free function frees the memory that was allocated by Alloc.

참고

AllocFree 함수는 서로를 사용 합니다.The Alloc and Free functions rely on each other. Free 함수는 Alloc 함수를 사용 하 여 할당 하는 메모리를 해제 하는 데만 사용 합니다.Use the Free function only to release memory that you allocate by using the Alloc function. 또한 Alloc 함수를 사용 하 여 메모리를 할당 하는 경우 Free 함수만 사용 하 여 해당 메모리를 해제 합니다.Also, when you use the Alloc function to allocate memory, use only the Free function to release that memory.

AllocFree 함수를 사용 하 여 다른 스레드나 작업에서 고정 된 할당 크기 집합을 할당 하 고 해제할 수 있습니다.Use the Alloc and Free functions when you allocate and free a fixed set of allocation sizes from different threads or tasks. 동시성 런타임는 C 런타임 힙에서 할당 하는 메모리를 캐시 합니다.The Concurrency Runtime caches memory that it allocates from the C Runtime heap. 동시성 런타임는 실행 중인 각 스레드에 대해 별도의 메모리 캐시를 보유 합니다. 따라서 런타임은 잠금이나 메모리 장벽을 사용 하지 않고 메모리를 관리 합니다.The Concurrency Runtime holds a separate memory cache for each running thread; therefore, the runtime manages memory without the use of locks or memory barriers. 응용 프로그램은 메모리 캐시가 더 자주 액세스 될 때 AllocFree 함수에서 더 많은 혜택을 제공 합니다.An application benefits more from the Alloc and Free functions when the memory cache is accessed more frequently. 예를 들어 AllocFree를 자주 호출 하는 스레드는 주로 Alloc 또는 Free를 호출 하는 스레드 보다 더 유용 합니다.For example, a thread that frequently calls both Alloc and Free benefits more than a thread that primarily calls Alloc or Free.

참고

이러한 메모리 관리 함수를 사용 하 고 응용 프로그램에서 많은 메모리를 사용 하는 경우 응용 프로그램은 원하는 것 보다 더 빠른 메모리 부족 상태를 입력할 수 있습니다.When you use these memory management functions, and your application uses lots of memory, the application may enter a low-memory condition sooner than you expect. 한 스레드에 의해 캐시 되는 메모리 블록을 다른 스레드에서 사용할 수 없으므로 한 스레드에 많은 메모리가 있는 경우 해당 메모리를 사용할 수 없습니다.Because the memory blocks that are cached by one thread are not available to any other thread, if one thread holds lots of memory, that memory is not available.

예제Example

AllocFree 함수를 사용 하 여 메모리 성능을 향상 시키는 예제는 방법: Alloc 및 Free를 사용 하 여 메모리 성능 향상을 참조 하세요.For an example that uses the Alloc and Free functions to improve memory performance, see How to: Use Alloc and Free to Improve Memory Performance.

참고 항목See also

작업 스케줄러Task Scheduler
방법: Alloc 및 Free를 사용하여 메모리 성능 개선How to: Use Alloc and Free to Improve Memory Performance