概述c/c++中各类指针,以及使用valgrind内存检测步骤
裸指针:是指未经封装的原始指针,也就是c++11之前的指针,以下代码定义的都是原始指针
int* ptr = new int;
char* c_ptr = new char('c');
double* d_ptr = new double(3.1415);
std::string * s_ptr = new std::string("hello");
智能指针:是指经封装的指针(底层也是裸指针实现),也就是c++11之后的指针,以下代码定义的都是智能指针(可以看看我的另一篇有关智能指针的文章:LINK)
std::shared_ptr<int> i_ptr =std::make_shared<int>(12);
std::weak_ptr<int> w_ptr =i_ptr;
std::unique_ptr<int> u_ptr =std::make_unique<int>(1);
空指针:是指初试化为nullptr的指针,