Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpLwPl 519 of 696 menu
◀ ▶

Размещение в готовой памяти в C++

Размещающий new строит объект по адресу, который уже передали, без обращения к глобальному аллокатору.

После такого создания память освобождают явным вызовом деструктора, а не delete. Запишем буфер, разместим в нем структуру и выведем поле:

#include <iostream> #include <new> struct Label { int id; explicit Label(int v) : id(v) {} }; int main() { alignas(Label) unsigned char storage[sizeof(Label)]; Label* item = new (storage) Label(7); std::cout << item->id << "\n"; item->~Label(); return 0; }

В alignas(int) буфере размером sizeof(int) разместите int со значением 4, выведите его и вызовите деструктор явно.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить