首页 > 编程语言 >七、PCL&C++相关小知识

七、PCL&C++相关小知识

时间:2023-09-11 10:06:51浏览次数:45  
标签:初始化 pcl 知识 C++ 智能 内存 PCL cloud 指针

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

相关文章

  • C++ STL之map、multimap
    map和multimap是C++STL(StandardTemplateLibrary)中的关联容器,它们提供键值对的存储和访问。map是一个有序关联容器,它存储一组键值对,其中每个键都是唯一的。map中的键值对按照键的升序排序。用户可以通过键来访问、修改和删除对应的值。map的实现通常使用平衡二叉搜索树(如红黑树......
  • C++的String与UF8互转
    UTF8_To_String#include<Stringapiset.h>#include<iostream>std::stringUTF8_To_String(conststd::string&str){intnwLen=MultiByteToWideChar(CP_UTF8,0,str.c_str(),-1,NULL,0);wchar_t*pwBuf=newwchar_t[nwLen+1];//一定要加......
  • c++程序设计语言
    把那些重要的东西适度地记录索引,但是一些不太重要的细节就在书上标记就行。[ch7]# void*指针的使用(149)/nullptr# 原始字符串;不同语言的大字符集(153)# 多维数组至少需要知道哪些边界大小值(160)#......
  • numpy 基本知识(1)
    道阻且长,行则将至;行而不辍,未来可期--《荀子·修身》numpy概述1.numpy是什么numpy是python的扩展程序库2.numpy的作用是什么支持大量的维度数组和矩阵运算,对于数组运算有大量的数学函数库数组计算主要包含:一个强大的N维数组对象ndarray广播功能函数整合C/C++/......
  • C++ virtual关键字
    用来修饰父类中的函数:1、修饰父类中的普通函数:1#include<iostream>2#include<string>3#include<stdlib.h>45usingnamespacestd;67classbase8{9public:10voidfun1(){cout<<"thisisbase::fun1"<<endl;}......
  • 18、复合类型之指针(P47、P48、P49、P50);C++ primer 2.3.2
    1、C++中的“声明符”是什么?声明符是用来指定变量或函数的类型、名称和属性的符号。例如:intlist[20]; 声明了一个名为list的整型数组,它有20个元素。int是类型说明符,list[20]是声明符char*cp; 声明了一个名为cp的指向字符的指针1。*cp是声明符doublefunc(void);......
  • c++中的数论知识
    写在开头:word的公式打不上来,只能截图了一.组合数学(1)加法定理与乘法原理加法原理:做一件事情,完成它可以有n类办法,在第一类办法中有m1种不同的方法,在第二类办法中有m2种不同的方法,……,在第n类办法中有mn种不同的方法。那么完成这件事共有N=m1+m2+…+mn种不同的方法。乘法原理:做一......
  • C++的运算符重载介绍
    所谓重载,就是赋予新的含义。函数重载(FunctionOverloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。运算符重载(OperatorOverloading)也是一个道理,同一个运算符可以有不同的功能。实际上,我们已经在不知不觉中使用了运算符重载。例如,+号可以对不同类型(int、float等)的......
  • unix/linux系统编程第一、二章知识归纳
    1.引言1.1Unix&Linux简介及历史版本Unix和Linux是一系列强大的操作系统,具有丰富的历史和版本。Unix的初始版本由肯·汤普森(KenThompson)和丹尼斯·里奇(DennisRitchie)于20世纪70年代早期开发。它是一种通用操作系统,经典书目包括1988年的《TheCProgrammingLang......
  • C++的知识
    首先,让我们了解一下C++是什么。C++是一种高级的面向对象编程语言,泰兰德幻,它是C语言的扩展。由于其高度的灵活性和强大的功能,C++在各种领域中得到了广泛的应用,尤其在游戏开发、系统编程和嵌入式设备等方面。C++的优势之一是其强大的数据类型系统。C++支持不同的数据类型,包括整数、......