原始指针
#include<iostream>
int main()
{
int* ptr = new int; //声明方式1:申请一块int类型的内存,
// 32位系统占4个字节,
// 64位系统占8个字节
int* ptr = new int(2); // 声明方式2:声明一个指向int的指针,
// 并将指针指向整型变量2
*ptr = 10; // 定义指针的指向(指向整型变量10)
std::cout<<*ptr<<std::endl;
std::cout<<ptr<<std::endl;
delete ptr; // 使用后删除指针
ptr = nullptr; // 并将指针赋值为空,C++11 之后推荐用nullptr,
// 而不是NULL
delete ptr; // 一般禁止删除两次指针,当执行了ptr = nullptr操作后,
// 可以删除两次不报错
}
智能指针
1、unique_ptr
三种创建方式:
- new
#include<memory>
std::unique_ptr<int> ptr(new int(10));
- make_unique
std::unique_ptr<int> ptr = std::make_unique<int>(10);
- std::move
std::unique_ptr<int> ptr1 = std::make_unique<int>(10);
std::unique_ptr<int> ptr2 = std::move(ptr1);
std::unique_ptr<int> ptr2(std::move(ptr1));
2、shared_ptr
https://blog.csdn.net/sjp11/article/details/123899141