std::unique_ptr<int[]> up(newint[10]());//this will correctly call delete[] 初始化为0 ps2,使用vector时,可以通过fill函数来将vector中所有元素置为默认值。 vector<unsignedchar> data(dataLen); std::fill(data.begin(), data.end(),0);...
intmain() { std::shared_ptr<std::vector<std::string>> make_ptr_2(AssignValue()); // 效果一样 // make_ptr_2 = AssignValue(); auto count = make_ptr_2.get()->size(); auto refer_num = make_ptr_2.use_count(); /* 下面注释的代码看看就好 std::vector<std::string> *copy_v2 ...
C++11提供了三种智能指针:std::shared_ptr, std::unique_ptr, std::weak_ptr,使用时需添加头文件#include。 shared_ptr shared_ptr 使用引用计数,每一个 shared_ptr 的拷贝都指向相同的内存。每引用它一次,内部的引用计数加1,每析构一次,内部的引用计数减1,减为0时,删除...
线程执行完毕后,main()函数将打印global_instance(std::shared_ptr对象)的值。 #include<iostream>#include<memory>#include<thread>#include<chrono>#include<mutex>#include<vector>std::shared_ptr<int>global_instance=std::make_shared<int>(0);std::mutexm;constexprintmax_loop=10000;voidthread_fcn(){/...
创建和使用 std::shared_ptr #include <iostream> #include <memory> // 需要包含此头文件 #include <vector> void example() { // 创建一个 std::shared_ptr 管理动态分配的 int 对象 std::shared_ptr<int> ptr1 = std::make_shared<int>(10); // 使用智能指针 std::cout << "Value: " <<...
这节省了一点内存(sizeof(std::unique_ptr<T[]>)通常是sizeof(void *),而sizeof(std::vector<...
引用计数指的是,所有管理同一个裸指针(raw pointer)的shared_ptr,都共享一个引用计数器,每当一个...
std::unique_ptr<int> uniqueInt(new int(10)); // 独占所有权 std::shared_ptr<int> sharedInt(new int(20)); // 共享所有权 } // 上述智能指针超出作用域后自动释放资源 右值引用和移动语义 #include <utility> #include <vector> std::vector<int> createVector() { ...
首先来看一下 std::shared_ptr 的所有成员函数,只有前 3 个是 non-const 的,剩余的全是 const 的: 我们来看两个例子 例 1: 代码语言:javascript 复制 #include<iostream>#include<memory>#include<thread>#include<vector>#include<atomic>using namespace std;struct SomeType{voidDoSomething(){some_value++...
class Something { public: ~Something() { } }; int main() { Something* s = new Something[1]; // raw pointer received from C api std::shared_ptr<Something> p = std::shared_ptr<Something>(s); std::vector<std::shared_ptr<Something>> v(&p,&p+1); return 0; } ...