Суть:
class foo
{
public:
foo(size_t sz1, size_t sz2) :
sz1_(sz1),
sz2_(sz2)
{
try
{
data1.resize(sz1_);
// fill data1
data2.reserve(sz2_);
// data2 will be filled later
}
catch (std::bad_alloc const&) {
std::cout << "Memory is over! :(" << std::endl;
}
}
size_t sz1_;
size_t sz2_;
std::vector<char> data1;
std::vector<int> data2;
};
unique_ptr<foo> a(new foo(5,10));
unique_ptr<foo> b(new foo(8,31));
Хочу гарантировать отсутсвие утечек в случае если память закончилась и exception safety. В случае, если вектор бросает исключение создание объекта прекращается. Чему в этом случае будет равно а? nullptr? Всё ли верно?