
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ memory_resource::allocate() Function
The C++ memory_resource::allocate()function is used for allocating memory dynamically in C++. This means it is used to allocate memory during runtime. It allocates a block of memory of n bytes and returns a pointer of type void, which can be cast to pointers of any type. It allows for the allocation of custom-sized memory blocks.
This function is often used with deallocate(), which is used to free the memory explicitly when it is no longer needed, ensuring proper memory management during runtime.
Exception If the function is unable to allocate the requested memory, it returns a null pointer.
Syntax
Following is the syntax for std::memory_resource::allocate() function.
void * allocate (size_t n);
Parameters
- n − It indicates the number of bytes to allocate.
Return Value
It returns a pointer of type void, which can be cast to pointers of any type.
Example 1
In the following example, we will allocate memory for an array of integers using allocate() function. First, we will allocate memory for 5 integers, then we will assign values to each element of the array, then print the values of the array.
#include <iostream> #include <memory> using namespace std; int main () { std::allocator<int> alloc; int* p = alloc.allocate(5); for(int i = 0; i < 5; i++) { alloc.construct(&p[i], i); } for(int i = 0; i < 5; i++) { cout << p[i] << endl; } for(int i = 0; i < 5; i++) { alloc.destroy(&p[i]); } alloc.deallocate(p, 5); return 0; }
Output
Following is the output of the above code −
0 1 2 3 4
Example 2
Now, let's allocate memory for an array of characters using allocate() function. For this, we will allocate memory for 5 characters, then we will assign values to each element of the array and then, we will print the values of the array.
#include <iostream> #include <memory> using namespace std; int main() { std::allocator<char> alloc; char* p = alloc.allocate(5); for(int i = 0; i < 5; i++) { alloc.construct(&p[i], 'A' + i); } for(int i = 0; i < 5; i++) { cout << p[i] << endl; } for(int i = 0; i < 5; i++) { alloc.destroy(&p[i]); } alloc.deallocate(p, 5); return 0; }
Output
Output of the above code is as follows −
A B C D E