Memory Management Functions
For the latest documentation on Visual Studio 2017 RC, see Visual Studio 2017 RC Documentation.
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. 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. The concurrency::Alloc function allocates a block of memory by using the specified size. The concurrency::Free function frees the memory that was allocated by
Free functions when you allocate and free a fixed set of allocation sizes from different threads or tasks. 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. An application benefits more from the
Free functions when the memory cache is accessed more frequently. For example, a thread that frequently calls both
Free benefits more than a thread that primarily calls
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.
For an example that uses the
Free functions to improve memory performance, see How to: Use Alloc and Free to Improve Memory Performance.