Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;,智能指针和垃圾收集_C++_Garbage Collection - Fatal编程技术网

C++ c++;,智能指针和垃圾收集

C++ c++;,智能指针和垃圾收集,c++,garbage-collection,C++,Garbage Collection,在c++11中,我们有shared_ptr,当我们将它与new一起使用时,我们以后不必显式调用delete。这部分工作由shared\ptr负责 这样说,为什么PPL一直说C++中没有垃圾回收器? 这里少了什么 我可以使用/认为代码> SydRypPTR>代码>作为垃圾回收器C++(?)/p>< p>在垃圾回收的语言中,比如java和c*,你不能避免。所有对象都会自动进行垃圾收集 C++允许你在自己之后自动清理,但是你必须选择使用它。SydLypTR是一个类类型,当SyrdYpPTR实例被破坏

在c++11中,我们有
shared_ptr
,当我们将它与
new
一起使用时,我们以后不必显式调用
delete
。这部分工作由
shared\ptr
负责

这样说,为什么PPL一直说C++中没有垃圾回收器? 这里少了什么


<>我可以使用/认为代码> SydRypPTR>代码>作为垃圾回收器C++(?)/p>< p>在垃圾回收的语言中,比如java和c*,你不能避免。所有对象都会自动进行垃圾收集


C++允许你在自己之后自动清理,但是你必须选择使用它。

SydLypTR是一个类类型,当SyrdYpPTR实例被破坏时,SyrdypTR的析构函数将释放内存,这不是GC。< /P>后续:我可以使用/SyrdypTR作为C++中的垃圾收集器吗?垃圾收集是一个独立的进程,它定期清理未引用的内存。智能指针只是当它们被破坏时自动清理相关内存的对象。智能指针基本上不会产生运行时成本,而GC可能会产生相当大的运行时成本。@Resident饼干引用计数器智能指针确实会产生运行时成本。引用计数不是免费的。更准确地说,当

shared_ptr
的实例被销毁时,其析构函数将减少指向对象的引用计数。如果ref计数变为零,它将销毁对象。@Fredrarson,是的,你是对的!谢谢