智能指针 shared_ptr
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<set>
#include<string>
#include<stack>
#include<queue>
#include<memory>
using namespace std;
void sp1() {
shared_ptr<string> s1;
if (s1 && s1->empty()) *s1 = "helloworld";
}
void sp2() {
shared_ptr<int> si = make_shared<int>(123);
auto p6 = make_shared<vector<string>>();
}
void sp3() {
}
new 内存分配
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<set>
#include<string>
#include<stack>
#include<queue>
#include<new>
#include<memory>
using namespace std;
void n1(){
int *i1 = new int;
int *i2 = new int(10);
vector<int> *vec = new vector<int>{
1,2,3,4,5};
}
void n2(){
const int *cn = new const int(123);
}
void n3(){
int *nn = new (nothrow) int;
}
void n4(){
shared_ptr<int> p(new int(20));
p.reset(new int(100));
}
void n5(){
int *p = new int(100);
delete p;
}
unique_ptr
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<set>
#include<string>
#include<stack>
#include<queue>
#include<memory>
using namespace std;
void up1(){
unique_ptr<int> p1(new int(10));
unique_ptr<int> p2(p1.release());
unique_ptr<int> p3;
p3.reset(p2.release());
}
动态数组
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<set>
#include<string>
#include<stack>
#include<queue>
#include<new>
#include<memory>
using namespace std;
void da1(){
int *pia = new int[10];
int *npia = new int[10]();
char *ch = new char[0];
}
void da2(){
int *it = new int[10];
delete [] it;
unique_ptr<int[]> ui(new int[10]);
ui.release();
for(int i=0;i!=10;i++) ui[i]=1;
}
void da3(){
shared_ptr<int> sp(new int[10], [](int *p) {
delete[] p;});
sp.reset();
}
allocator
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<set>
#include<string>
#include<stack>
#include<queue>
#include<memory>
using namespace std;
void ac1(){
allocator<string> str;
auto const ss = str.allocate(10);
}