You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Использование std::make_unique() и std::make_shared() может привести к киданию исключение std::bad_alloc, если памяти не достаточно.
В таких случаях, необходимо использовать оператор new с std::nothrow.
#include<memory>
std::unique_ptr<T> p = new(std::nothrow) T();
Функции std::make_shared() и std::make_unique() более эффективны и могут предотвратить двойное выделения памяти.
Предлагается добавить std::make_unique_nothrow() и std::make_shared_nothrow() функции, которые можно реализовано следующим образом.
Использование std::make_unique() и std::make_shared() может привести к киданию исключение std::bad_alloc, если памяти не достаточно.
В таких случаях, необходимо использовать оператор new с std::nothrow.
Функции std::make_shared() и std::make_unique() более эффективны и могут предотвратить двойное выделения памяти.
Предлагается добавить std::make_unique_nothrow() и std::make_shared_nothrow() функции, которые можно реализовано следующим образом.
В библиотеке boost уже реализована подобные функции
https://www.boost.org/doc/libs/1_63_0/boost/move/make_unique.hpp
The text was updated successfully, but these errors were encountered: