擅长:python、mysql、java
<blockquote>
<p>AFAIK, the use of shared_ptr is often discouraged because of potential bugs caused by careless usage of them (unless you have a really good explanation for significant benefit and carefully checked design).</p>
</blockquote>
<p>我不同意。除非你有很好的理由不这么做,否则一般倾向于使用这些智能指针。在</p>
<blockquote>
<p>shared_ptr that makes their usage discouraged in C++ but not causing similar problems in Python?</p>
</blockquote>
<p>好吧,我不知道您最喜欢的更大的信号处理框架生态系统,但是<a href="http://gnuradio.org" rel="nofollow">GNU Radio</a>对所有的<em>块使用共享的ptr,这是GNU无线电架构的核心元素。实际上,块是带有<code>private</code>构造函数的类,这些构造函数只能由<code>friend</code><code>make</code>函数访问,该函数返回<code>shared_ptr</code>。我们在这方面没有问题,GNU电台有充分的理由采用这种模式。现在,我们没有一个地方可以让用户尝试使用释放的块对象,没有一个块被泄露。不错!在</p>
<p>也可以使用SWIG和一些C++类的网关类,它们不能很好地表示为Python类型。所有这些在两方面都很好,C++和Python。事实上,它工作得非常好,我们可以在PythDypTR中使用Python类作为C++运行时中的块。在</p>
<p>而且,我们从来没有性能问题。GNU无线电是一个高速率、高度优化、大量多线程的框架。在</p>