1、智能指针初始化(pcl库)
智能指针在用的时候一定要初始化
①在函数里面进行初始化
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_source (new pcl::PointCloud<pcl::PointXYZ>)
这里的Ptr就是智能指针,所以只看到过cloud的创建部分,而通常没有cloud的delete部分。
②在类里面初始化
类内部初始化的时候,不可以像1中那样使用new关键字进行初始化,可以使用智能指针的reset方法在构造函数里面进行初始化
pcl::PointCloud<pcl::PointXYZ>::Ptr input_cloud;
input_cloud.reset(new pcl::PointCloud<pcl::PointXYZ>());
reset()重置智能指针托管的内存地址,如果地址不一样,原来的会被析构掉。
③与普通指针相比,智能指针最大的不同是不用考虑只针对性的释放,系统在指针对象消亡时自动进行delete操作,这极大地简化了指针的使用。使用时只需要包含相关的头文件即可。
2、为什么要使用智能指针
①智能指针帮助C++程序员管理动态分配的内存,它会帮助我们自动释放new出来的内存,从而避免内存泄漏。
②使用指针的时候,没有释放,就会造成内存泄露。
如果分配的动态内存都交由有生命周期的对象来处理,那么在对象过期时,让它的析构函数删除指向的内存。智能指针就是通过这个原理来解决指针自动释放的问题。
标签:初始化,pcl,知识,C++,智能,内存,PCL,cloud,指针 From: https://blog.51cto.com/u_16244389/7432150