Ví dụ unique_ptr
(không có dấu phân cách tùy chỉnh) có cùng dấu vết bộ nhớ dưới dạng con trỏ thô hay không lưu trữ một cá thể nhiều hơn chỉ là con trỏ?Dấu chân bộ nhớ của unique_ptr
Trả lời
Như @JoachimPileborg đề nghị, với GCC 4.8 (x64) mã này
std::cout << "sizeof(unique_ptr) = " << sizeof(std::unique_ptr<int>) << '\n';
sản xuất sản lượng này:
sizeof (unique_ptr) = 8
Vì vậy, dưới đây triển khai, câu trả lời là có.
Đây không phải là đáng ngạc nhiên: sau khi tất cả, unique_ptr
không thêm tính năng -con trỏ nguyên (ví dụ một bộ đếm như shared_ptr
không Trong thực tế, nếu tôi in sizeof(shared_ptr<int>)
kết quả lần này là 16
.). unique_ptr
sẽ chăm sóc cho bạn về một số khía cạnh của quản lý con trỏ.
Bằng cách này, là unique_ptr
khác với mã nguyên bản, mã được tạo sẽ khác nhau khi sử dụng một hoặc một mã khác. Cụ thể, nếu unique_ptr
vượt quá phạm vi trong mã của bạn, trình biên dịch sẽ tạo mã cho hàm hủy của chuyên môn cụ thể đó và nó sẽ sử dụng mã đó mỗi lần unique_ptr
loại đó sẽ bị hủy (và đó là chính xác những gì bạn muốn).
- 1. Dấu chân bộ nhớ của các kiểu dữ liệu Haskell
- 2. Ghi lại dấu chân bộ nhớ trong Linux
- 3. Python: Cách ước tính/tính toán dấu chân bộ nhớ của cấu trúc dữ liệu?
- 4. Dấu chân bộ nhớ của một đối tượng tại Runtime trong .NET là gì?
- 5. Lớp học không có thành viên dữ liệu có dấu chân bộ nhớ trong java không?
- 6. Dấu chân bộ nhớ đối tượng Java - Visualvm và java.sizeOf đo lường
- 7. Giảm thiểu dấu chân bộ nhớ "trên mỗi kết nối" Tomcat
- 8. Java chuyển đổi định dạng hình ảnh có dấu chân bộ nhớ thấp
- 9. Dấu chân bộ nhớ cho các hệ thống lớn trong Vaadin
- 10. Move 'unique_ptr`s giữa các bộ
- 11. unique_ptr - cải tiến chính?
- 12. ObjC: sử dụng bộ nhớ của đại biểu vs khối?
- 13. Nêu nhớ bộ nhớ json của Python
- 14. Ngăn chặn rò rỉ bộ nhớ AJAX
- 15. unique_ptr deleter overhead
- 16. Làm thế nào để hướng dẫn JVM để giữ chân bộ nhớ càng thấp càng tốt?
- 17. Xác định tên thuộc tính có dấu chân thấp
- 18. Sử dụng bộ nhớ Python: Đối tượng nào của tôi đang chiếm nhiều bộ nhớ nhất?
- 19. Bộ lọc chân trên cột cụ thể
- 20. .Net Bộ nhớ trong bộ nhớ đơn giản
- 21. Lặp lại một container của unique_ptr
- 22. Hình ảnh VMWare Linux với dấu chân nhỏ
- 23. unique_ptr operator =
- 24. Bộ nhớ cache, tắt bộ nhớ đệm
- 25. PHP thay thế dấu cách bằng gạch chân
- 26. Dấu chân python so với thời gian chạy java
- 27. Dấu chân ứng dụng là gì và cách tính toán?
- 28. Xóa bộ nhớ cache của bưu cục
- 29. Cách xóa Bộ nhớ Cache của Smarty
- 30. Giới hạn bộ nhớ VM của Python
Đó là một câu hỏi rất cụ thể về triển khai và do đó có thể khác nhau rất nhiều giữa các thư viện chuẩn khác nhau. Nhưng đối với một kiểm tra đơn giản tại sao không sử dụng 'sizeof' để kiểm tra và so sánh với một con trỏ thô? –
@JoachimPileborg Bởi vì tôi nghĩ những người khác có thể có cùng một câu hỏi trong tương lai. Điểm tốt. Về mặt kỹ thuật, tôi nên hỏi: "Có thể * có thể * để thực hiện' unique_ptr' với cùng một dấu vết bộ nhớ như một con trỏ thô "như việc triển khai có thể sẽ làm điều này nếu có thể. – Museful
câu trả lời là ở đây: http://stackoverflow.com/a/13460653/2183287 –