std::shared_ptr<new int(10)>
时间: 2024-11-20 12:43:27 浏览: 4
C++11 std::shared_ptr总结与使用示例代码详解
`std::shared_ptr<int>(new int(10))` 是创建一个 `std::shared_ptr` 指向动态分配的整数 `10` 的实例。当使用这种方式初始化 `std::shared_ptr` 时,它会自动调用 `new` 运算符来分配内存并存储整数值。
**创建过程**[^1]:
```cpp
// 创建一个共享所有权的智能指针,指向新的int对象(值10)
std::shared_ptr<int> ptr(new int(10));
```
在这个操作中,`new int(10)` 分配了一个新的整数对象并将值设为10,`std::shared_ptr<int>` 接收这个返回的指针并将其作为其管理的对象。
**关于大小**:
由于`std::shared_ptr` 内部有两个指针(一个是实际指向资源的原始指针,另一个是指向引用计数的),所以它的大小通常是原始指针大小的两倍。
**内存大小比较**[^2]:
```cpp
#include <iostream>
#include <memory>
int main() {
// 输出 shared_ptr 和 unique_ptr 对应类型的大小
std::cout << "Size of std::shared_ptr<int>: " << sizeof(std::shared_ptr<int>) << std::endl;
std::cout << "Size of std::unique_ptr<int>: " << sizeof(std::unique_ptr<int>) << std::endl;
}
```
运行这段代码会显示`std::shared_ptr<int>`比`std::unique_ptr<int>`大,因为`unique_ptr`只包含一个指向资源的指针。
阅读全文