All Uninitialized-Memory Helpers
All Uninitialized-Memory Helpers
A compact index of raw-storage construction, destruction, and uninitialized algorithms used in low-level library code.
All Uninitialized-Memory Helpers
A compact index of raw-storage construction, destruction, and uninitialized algorithms used in low-level library code.
Use reference pages to confirm names, categories, nearby facilities, and the constraints that matter before writing or reviewing code.
std::construct_atstd::uninitialized_default_constructstd::uninitialized_default_construct_nstd::uninitialized_value_constructstd::uninitialized_value_construct_nstd::uninitialized_fillstd::uninitialized_fill_nstd::uninitialized_copystd::uninitialized_copy_nstd::uninitialized_movestd::uninitialized_move_nstd::destroy_atstd::destroystd::destroy_nstd::allocator_traitsstd::to_address<new>std::launder#include <memory>
#include <new>
int main() {
alignas(int) unsigned char storage[sizeof(int)];
int* value = std::construct_at(reinterpret_cast<int*>(storage), 42);
int result = *value;
std::destroy_at(value);
return result;
}
This is the core raw-storage pattern: create an object in already allocated storage, use it, then destroy it explicitly. That is useful in container internals, allocator-backed buffers, and other low-level code that separates allocation from construction.
construct_at and destroy_at for single-object lifetime management in preallocated memory#include <memory>
int main() {
auto owner = std::make_unique<int>(42);
auto shared = std::make_shared<int>(*owner);
owner.reset();
return *shared;
}