<tfoot id='PQ5kq'></tfoot>
<i id='PQ5kq'><tr id='PQ5kq'><dt id='PQ5kq'><q id='PQ5kq'><span id='PQ5kq'><b id='PQ5kq'><form id='PQ5kq'><ins id='PQ5kq'></ins><ul id='PQ5kq'></ul><sub id='PQ5kq'></sub></form><legend id='PQ5kq'></legend><bdo id='PQ5kq'><pre id='PQ5kq'><center id='PQ5kq'></center></pre></bdo></b><th id='PQ5kq'></th></span></q></dt></tr></i><div id='PQ5kq'><tfoot id='PQ5kq'></tfoot><dl id='PQ5kq'><fieldset id='PQ5kq'></fieldset></dl></div>
  • <small id='PQ5kq'></small><noframes id='PQ5kq'>

  • <legend id='PQ5kq'><style id='PQ5kq'><dir id='PQ5kq'><q id='PQ5kq'></q></dir></style></legend>

      • <bdo id='PQ5kq'></bdo><ul id='PQ5kq'></ul>

        引用计数智能指针的引用计数是如何工作的?

        How does a reference-counting smart pointer#39;s reference counting work?(引用计数智能指针的引用计数是如何工作的?)

          <legend id='VagOg'><style id='VagOg'><dir id='VagOg'><q id='VagOg'></q></dir></style></legend>
          • <bdo id='VagOg'></bdo><ul id='VagOg'></ul>

            <small id='VagOg'></small><noframes id='VagOg'>

          • <i id='VagOg'><tr id='VagOg'><dt id='VagOg'><q id='VagOg'><span id='VagOg'><b id='VagOg'><form id='VagOg'><ins id='VagOg'></ins><ul id='VagOg'></ul><sub id='VagOg'></sub></form><legend id='VagOg'></legend><bdo id='VagOg'><pre id='VagOg'><center id='VagOg'></center></pre></bdo></b><th id='VagOg'></th></span></q></dt></tr></i><div id='VagOg'><tfoot id='VagOg'></tfoot><dl id='VagOg'><fieldset id='VagOg'></fieldset></dl></div>

                <tbody id='VagOg'></tbody>

              <tfoot id='VagOg'></tfoot>

                1. 本文介绍了引用计数智能指针的引用计数是如何工作的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  换句话说,实现如何跟踪计数?

                  In other words, how does the implementation keeps track of the count?

                  是否有一个类似地图的对象可以被所有 shared_ptr 实例访问,其键是指针的地址,值是引用的数量?如果我必须实现一个 shared_ptr,这是我想到的第一个想法.

                  Is there a map-like object maintained which is accessible by all the shared_ptr instances whose key is the pointer's address and value is the number of references? If I've to implement a shared_ptr, this is the first idea that's coming to my mind.

                  在这些引用计数智能指针的情况下,是否有可能发生内存泄漏?如果是这样,我该如何避免它们?

                  Is there a possibility for a memory leak in case of these reference-counting smart pointers? If so, how can I avoid them?

                  推荐答案

                  我见过两种不同的非侵入式方法来解决这个问题:

                  I've seen two different non-intrusive approaches to this:

                  1. 智能指针分配一个小的内存块来包含参考计数器.每个副本智能指针然后接收一个指向实际对象的指针和一个指向引用计数的指针.
                  2. 除了对象指针,每个智能指针包含一个上一个和下一个指针,从而形成一个双向链表指向特定的智能指针目的.引用计数是隐含在列表中.当一个聪明指针被复制,它将自身添加到列表.销毁时,每个智能指针从列表.如果是最后一个然后它释放的列表引用的对象也是如此.

                  如果你去这里并滚动到底部,有一个很好的更清楚地解释这些方法的图表.

                  If you go here and scroll to the bottom, there is an excellent diagram which explains these methods much more clearly.

                  这篇关于引用计数智能指针的引用计数是如何工作的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Constructor initialization Vs assignment(构造函数初始化 Vs 赋值)
                  Is a `=default` move constructor equivalent to a member-wise move constructor?(`=default` 移动构造函数是否等同于成员移动构造函数?)
                  Has the new C++11 member initialization feature at declaration made initialization lists obsolete?(声明时新的 C++11 成员初始化功能是否使初始化列表过时了?)
                  Order of constructor call in virtual inheritance(虚继承中构造函数调用的顺序)
                  How to use sfinae for selecting constructors?(如何使用 sfinae 选择构造函数?)
                  Initializing a union with a non-trivial constructor(使用非平凡的构造函数初始化联合)

                      <tfoot id='tw99A'></tfoot>

                      <i id='tw99A'><tr id='tw99A'><dt id='tw99A'><q id='tw99A'><span id='tw99A'><b id='tw99A'><form id='tw99A'><ins id='tw99A'></ins><ul id='tw99A'></ul><sub id='tw99A'></sub></form><legend id='tw99A'></legend><bdo id='tw99A'><pre id='tw99A'><center id='tw99A'></center></pre></bdo></b><th id='tw99A'></th></span></q></dt></tr></i><div id='tw99A'><tfoot id='tw99A'></tfoot><dl id='tw99A'><fieldset id='tw99A'></fieldset></dl></div>

                      <small id='tw99A'></small><noframes id='tw99A'>

                      <legend id='tw99A'><style id='tw99A'><dir id='tw99A'><q id='tw99A'></q></dir></style></legend>
                          <bdo id='tw99A'></bdo><ul id='tw99A'></ul>

                              <tbody id='tw99A'></tbody>