Để có được một void *
chức năng trong CI sẽ làm một cái gì đó như thế này (ví dụ rất cơ bản):
void *get_ptr(size_t size)
{
void *ptr = malloc(size);
return ptr;
}
Làm thế nào để tôi đạt được kết quả tương tự khi sử dụng std::unique_ptr<>
?
stackoverflow.com/questions/4316727/
—
Mạnh
Vui lòng giải thích vấn đề bạn gặp phải khi thực hiện nó.
—
molbdnilo
Xem câu trả lời này để biết chung void unique_ptr: stackoverflow.com/a/39288979/2527795
—
vll
Xin lưu ý rằng hầu như không bao giờ có lý do để sử dụng
—
quả óc chó
malloc
trong C ++ như thế này. Bạn đang trả lại một con trỏ vào bộ nhớ thô, rằng bạn cần đặt các đối tượng mới vào trước khi bạn được phép sử dụng nó. Nếu bạn không có lý do chính đáng để tạo các đối tượng sau đó so với khi bạn phân bổ bộ nhớ, thì bạn nên sử dụng new
hoặc std::make_unique
sẽ phân bổ bộ nhớ, cũng như tạo các đối tượng phù hợp. Trong cả hai trường hợp std::vector
với reserve
là thăm dò. tốt hơn nữa Ngay cả khi bạn không sử dụng chúng, đây không phải operator new
là cách phân bổ bộ nhớ thành ngữ malloc
.