January 2018
Intermediate to advanced
374 pages
9h 53m
English
C++ allows us to separate memory allocation from object construction. We could, for example, allocate a byte array with malloc() and construct a new User object in that region of memory. Have a look at the following code snippet:
auto memory = std::malloc(sizeof(User));
auto user = new (memory) User("john");
The perhaps unfamiliar syntax using new (memory) is called placement new. It is a non-allocating form of new, which only constructs an object. In the preceding example, placement new constructs the User object and places it at the specified memory location. Since we are allocating the memory with std::malloc() for a single object, it is guaranteed to be correctly aligned. Later on, we will explore cases where we have to ...