Nếu tôi hiểu chính xác, khi shared_ptr (từ boost, tr1, std, bất cứ điều gì) được khởi tạo với một con trỏ tới đối tượng mới được phân bổ, hàm tạo của shared_ptr cấp phát một lượng bộ nhớ nhỏ để giữ số tham chiếu cho con trỏ quản lý. Điều gì xảy ra nếu phân bổ đó không thành công? Trong mã sau đây:Điều gì sẽ xảy ra nếu một hàm tạo của shared_ptr bị lỗi?
class my_class {};
void my_func(shared_ptr<my_class> arg);
int main(int argc, char* argv[])
{
my_func(shared_ptr<my_class>(new my_class()));
return 0;
}
... sẽ là đối tượng my_class
bị rò rỉ nếu shared_ptr không cấp phát bộ nhớ cho số tham chiếu của nó? Hay constructor của shared_ptr có chịu trách nhiệm xóa đối tượng không?
Chúc mừng. Tôi đã kích hoạt Google nhưng không tìm thấy câu trả lời. Một trong những ngày này tôi sẽ học cách kiểm tra nguồn - tức là tiêu chuẩn. :-) – bythescruff