C++指针很难?那是你可能这些东西还不知道

晓晓 125 0

搬瓦工官网(国内无法打开,需要梯子)https://bandwagonhost.com
搬瓦工官网中国镜像站https://bwh81.net(搬瓦工官方网站,放心访问)
搬瓦工官方中文网https://bwh86.net
搬瓦工官网所有方案以及库存监控页面https://bwh86.net/monitor
最新搬瓦工最大优惠力度优惠码(循环优惠6.58%):BWHNCXNVXV
搬瓦工新用户注册和图文购买教程点击查看

本文要学习的内容:

1.指针在C / C ++中的重要性。

2.普通指针出现问题。

3.为什么引入智能指针。

4.智能指针的类型。

指针在C / C ++中的重要性:
指针用于访问程序外部的资源,例如堆内存。因此,如果在堆内存中创建了任何东西,则用于访问堆内存。

普通指针的问题:
通过使用此示例,使用一个小型C ++程序,让我们了解普通指针的主要问题是什么。

因此,发生的事情是它将有一个指针“ p”,它将指向一个矩形类型的对象,该对象将具有长度和宽度。一旦函数结束,将删除该“ p”,因为p是函数的局部变量,它将终止,但是在堆内部分配的新矩形不会被释放。它将返回并返回它的无限循环,再次调用它,因此再次创建新的p,然后再次为长度和宽度相同的矩形创建一个新的对象。那么,关于前一个对象的情况将不会被删除,对于另一个新对象,也将不会被删除。因此,每次它都会创建一个对象,但不会删除它,因此这会导致堆内存中的内存泄漏。就像内存的长度和宽度一样,虽然已分配但未使用,但未使用。因此,整个堆内存可能是无限的,因此可能变得不可用。因此,在某一阶段,由于缺少堆内存,程序将崩溃。因此,在fun()的最后,如果我们不提及这一点,则应使用'delete p',这将导致非常严重的问题。因此,由于程序员的懒惰或粗心,可能会出现这种类型的问题。因此,为了帮助程序员C ++ 11承担责任就引入了智能指针。

还有比如堆内存的问题在于,当不需要它时,必须将其自身释放。因此,大多数程序员在编写用于对象的重新分配的代码时过于懒惰,这会导致严重的问题,例如内存泄漏,这将导致程序崩溃。因此,诸如Java,C#、. Net Framework之类的语言提供了垃圾回收机制来取消分配未使用的对象。因此,在C ++ 11中,它引入了自动管理内存的智能指针,当指针不在范围内时,它们将在不使用对象时自动释放对象,这将自动分配内存。

考虑以下带有普通指针的简单C ++代码。

使用智能指针,我们可以使指针以不需要显式调用delete的方式工作。智能指针是指针的包装类,带有*和->重载的运算符。 智能指针类的对象看起来像一个指针,但是可以执行普通指针不喜欢自动销毁的许多事情(是的,我们不必显式使用delete),引用计数等等。
这个想法是采用带有指针,析构函数和重载运算符(例如*和->)的类。由于当对象超出范围时会自动调用析构函数,因此动态分配的内存将被自动删除(或可以减少引用计数)。考虑以下简单的智能ptr类。

编写一个适用于所有类型的智能指针类。
是的,我们可以使用模板编写通用的智能指针类。以下C ++代码演示了相同的过程。

注意:智能指针在资源管理中也很有用,例如文件句柄或网络套接字。

智能指针的类型:

1.unique_ptr
如果使用唯一的指针,则如果创建了一个对象并且指针P1指向该对象,则只有一个指针可以一次指向该对象。因此我们无法与其他指针共享,但是可以通过删除P1将控件转移到P2。

2.shared_ptr
如果使用的是shared_ptr,则一次可以有多个指针指向该对象,并且它将使用use_count()方法维护引用计数器。

3.weak_ptr
它与shared_ptr非常相似,不同之处在于它不维护引用计数器。在这种情况下,指针对对象没有强大的控制作用。

C ++库以auto_ptr,unique_ptr,shared_ptr和weak_ptr的形式提供智能指针的实现。

了解更多有关内容,以及领取免费学习资料以及教程,请查看下方图片:

搬瓦工机房方案整理

搬瓦工目前提供了4个方案,包括搬瓦工KVM方案搬瓦工CN2 GT方案搬瓦工CN2 GIA-E方案搬瓦工香港方案,每种方案有多种套餐配置,详细的配置和价格整理如下:
套餐名称 CPU 内存大小 硬盘容量 每月流量 带宽 价格/年 购买链接
搬瓦工CN2-E限量版(搬瓦工补货通知群(禁言,仅推送):903230558)
CN2 GIA LIMITED EDITION 1核 1 GB 10 GB 500 GB 1 Gbps $89.99 立即购买
搬瓦工CN2 GT方案
CN2 1核 1024 MB 20 GB 1000 GB 1 Gbps $49.99 立即购买
CN2 1核 2048 MB 40 GB 2000 GB 1 Gbps $99.99 立即购买
CN2 2核 4096 MB 80 GB 3000 GB 1 Gbps $199.99 立即购买
CN2 2核 8 GB 160 GB 5000 GB 1 Gbps $399.99 立即购买
CN2 3核 16 GB 320 GB 8000 GB 1 Gbps $799.99 立即购买
CN2大流量 3核 16 GB 320 GB 12000 GB 1 Gbps $899.99 立即购买
CN2大流量 3核 16 GB 320 GB 16000 GB 1 Gbps $1299.99 立即购买
搬瓦工CN2 GIA-E方案(可选搬瓦工DC9 CN2 GIA,搬瓦工DC6 CN2 GIA,搬瓦工日本大阪软银线路)
CN2 GIA ECOMMERCE 2核 1 GB 20 GB 1000 GB 2.5 Gbps $169.99 立即购买
CN2 GIA ECOMMERCE 3核 2 GB 40 GB 2000 GB 2.5 Gbps $299.99 立即购买
CN2 GIA ECOMMERCE 4核 4 GB 80 GB 3000 GB 2.5 Gbps $549.99 立即购买
CN2 GIA ECOMMERCE 6核 8 GB 160 GB 5000 GB 5 Gbps $879.99 立即购买
CN2 GIA ECOMMERCE 8核 16 GB 320 GB 8000 GB 5 Gbps $1599.99 立即购买
CN2 GIA ECOMMERCE 10核 32 GB 640 GB 10000 GB 10 Gbps $2759.99 立即购买
CN2 GIA ECOMMERCE 12核 64 GB 1280 GB 12000 GB 10 Gbps $5399.99 立即购买
搬瓦工香港方案
香港CN2 GIA 2核 2048 MB 40 GB 500 GB 1 Gbps $899.99 立即购买
香港CN2 GIA 4核 4096 MB 80 GB 1000 GB 1 Gbps $1559.99 立即购买
香港CN2 GIA 6核 8192 MB 160 GB 2000 GB 1 Gbps $2999.99 立即购买
香港CN2 GIA 6核 16384 MB 320 GB 4000 GB 1 Gbps $5899.99 立即购买
搬瓦工日本方案
日本CN2 GIA 2核 2048 MB 40 GB 500 GB 1.2 Gbps $899.99 立即购买
日本CN2 GIA 4核 4096 MB 80 GB 1000 GB 1.2 Gbps $1559.99 立即购买
日本CN2 GIA 6核 8192 MB 160 GB 2000 GB 1.2 Gbps $2999.99 立即购买
日本CN2 GIA 6核 16384 MB 320 GB 4000 GB 1.2 Gbps $5899.99 立即购买
搬瓦工KVM方案
KVM 2核 1024 MB 20 GB 1 TB 1 Gbps $49.99 立即购买
KVM 3核 2 GB 40 GB 2 TB 1 Gbps $99.99 立即购买
KVM 4核 4 GB 80 GB 3 TB 1 Gbps $199.99 立即购买
KVM 5核 8 GB 160 GB 4 TB 1 Gbps $399.99 立即购买
KVM 6核 16 GB 320 GB 5 TB 1 Gbps $799.99 立即购买
KVM 7核 24 GB 480GB 6 TB 1 Gbps $1,199.99 立即购买

标签: 国外云服务器 香港服务器 美国服务器 搬瓦工VPS

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~