Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
#include <iostream> #include <new> // std::nothrow, placement new #include <cstdlib> // std::malloc, std::free struct Widget { Widget(int id) : id_(id) { std::cout << "Widget(" << id_ << ") constructed "; } ~Widget() { std::cout << "Widget(" << id_ << ") destroyed "; } int id_; }; int main() { // Scalar new/delete Widget* w = new Widget(1); delete w; // Array new/delete Widget* arr = new Widget[3]{2, 3, 4}; delete[] arr; // must use delete[], not delete // nothrow: returns nullptr instead of throwing Widget* big = new (std::nothrow) Widget(5); if (!big) { std::cout << "Allocation failed "; } else { delete big; } // Placement new: construct into pre-allocated buffer alignas(Widget) unsigned char buf[sizeof(Widget)]; Widget* pw = new (buf) Widget(99); // no heap allocation std::cout << "Placed widget id: " << pw->id_ << " "; pw->~Widget(); // explicit destructor — do NOT delete pw // Alignment query std::cout << "alignof(Widget) = " << alignof(Widget) << " "; std::cout << "sizeof(Widget) = " << sizeof(Widget) << " "; return 0; }
Result
Open