How to create and initialize a `std::unique_ptr` object

When working with modern C++, it is common to use smart pointers to manage memory allocation and deallocation. One popular smart pointer is std::unique_ptr. In this blog post, we will look at how to create and initialize a std::unique_ptr object.

What is std::unique_ptr?

std::unique_ptr is a smart pointer provided by the C++ Standard Library. It is designed to provide exclusive ownership of an allocated object. This means that only one std::unique_ptr can own the resource at any given time, and when the std::unique_ptr goes out of scope or is explicitly reset, it will automatically release the allocated memory.

Creating a std::unique_ptr

To create a std::unique_ptr object, you can use the constructor of the std::unique_ptr class. The constructor takes a raw pointer to the allocated object as its argument.

Here’s an example of creating a std::unique_ptr that manages an int object:

std::unique_ptr<int> ptr(new int(42));

In the above code, we allocate memory for an int object and initialize it with the value 42. We then pass the raw pointer to the std::unique_ptr constructor, which takes ownership of the allocated memory.

Initializing a std::unique_ptr

You can also initialize a std::unique_ptr using the std::make_unique function, which was introduced in C++14. This function allows you to avoid using the new keyword and provides a more convenient way to create std::unique_ptr objects.

Here’s an example of using std::make_unique to initialize a std::unique_ptr:

auto ptr = std::make_unique<int>(42);

In the above code, we use std::make_unique to create a std::unique_ptr that manages an int object initialized with the value 42. The auto keyword is used to deduce the type of the std::unique_ptr object.

Conclusion

In this blog post, we have learned how to create and initialize a std::unique_ptr object in C++. The std::unique_ptr provides a safe and convenient way to manage memory allocation and deallocation in modern C++. By using smart pointers like std::unique_ptr, we can avoid memory leaks and write more robust and reliable code.

#programming #cplusplus