草庐IT

c++ - swift 3 中是否有等效的 c++ shared_ptr?

我知道swift3中的强引用(默认)和弱引用(使用weak关键字),但是是否有等效的共享引用?谢谢 最佳答案 Swift中的内存管理范式与C++不同,因为它继承了Objective-C的保留-释放机制(通过ARC)。如您所料,C++的解决方案减少了编译器的责任,更具表现力和优化,但使用起来也更复杂。因此,回答您的问题:strong(默认)基本上像shared_ptr一样工作,weak就像weak_ptr和unique_ptr没有直接的等价物。但是,如果编译器能够保证指针的唯一性(例如,您在同一范围内创建和销毁对象-就像函数的主体-而

java - C++:普遍使用 shared_ptr<> 是否等同于 gc?

这只是一个学术问题(我永远不会在实际代码中这样做):如果我要在我的代码中普遍使用shared_ptr,其行为是否等同于像Java这样的gc收集语言?如果不是,其行为与gc嵌入式语言有何不同?与gc嵌入式语言相比,哪种C++构造会产生等效的行为?注意:在实际编码中,我非常喜欢使用RAII和严格所有权,而不是使用任何智能指针。我也知道其他不太通用的指针unique_ptr会更有效率。这个问题只是对智能指针等价性的查询。 最佳答案 不,有几个重要的区别:只要有循环引用,就会发生内存泄漏。垃圾收集器可以处理循环,引用计数不能。您将避免任何停

c++ - 如何使用 shared_ptr 和 SWIG 避免内存泄漏

我正在尝试使用boost::shared_ptr来允许我在我的python脚本中使用c++文件I/O流对象。但是,生成的包装器警告我它正在泄漏内存。这是一个展示问题的最小.i文件:%moduleptrtest%include"boost_shared_ptr.i"%include"std_string.i"%shared_ptr(std::ofstream)%{#include#includetypedefboost::shared_ptrofstream_ptr;ofstream_ptrmk_out(conststd::string&fname){returnofstream_ptr

python - 从 scipy CSR 稀疏矩阵访问值、列索引和 row_ptr 数据

我有一个大矩阵,我想将其转换为稀疏CSR格式。当我这样做时:importscipyasspKs=sp.sparse.csr_matrix(A)printKsA是稠密的,我得到(0,0)-2116689024.0(0,1)394620032.0(0,2)-588142656.0(0,12)1567432448.0(0,14)-36273164.0(0,24)233332608.0(0,25)23677192.0(0,26)-315783392.0(0,45)157961968.0(0,46)173632816.0等...我可以使用以下方法获取行索引、列索引和值的向量:Knz=Ks.non

Xcode 4.4.1 中 non_lazy_ptr 的 iOS SDK 5.1 链接器错误

(我将此问题发布到VideoLAN论坛,但还没有人回答。我知道​​SO社区不会让我失望。)我正在尝试为iOS构建MobileVLC项目。我已经完成了命令行过程来构建项目,并在进行了几次调整后,如http://forum.videolan.org/viewtopic.php?f=12&t=103331中所述。和http://forum.videolan.org/viewtopic.php?f=12&t=103271,构建脚本几乎运行到完成。当它试图让Xcode构建最终项目时出错。所以我将它加载到Xcode中并尝试构建,我可以看到错误,这是我使用-v链接器标志时得到的:Ld/Users/b

go - 来自 go sources 的这段代码是什么意思?喜欢 (*(*float32)(v.ptr))

在反射包中我看到这样的代码returnfloat64(*(*float32)(v.ptr))什么是*(*float32)(v.ptr)?我没有任何想法 最佳答案 让我们展开表达式。我们将从最内层到最外层,因为这是它的评估顺序:(*float32)(v.ptr)将v.ptr转换为*float32,一个指向float32的指针。*(*float32)(v.ptr)取消引用该指针,为我们提供一个float32值。float64(*(*float32)(v.ptr))将float32值转换为float64值。因此,无论v.ptr是什么,它都

go - 在 ptr 值上反射(reflect) : call of reflect. Value.Field

我正在尝试将map[string]interface{}映射到结构。我的结构包含指针类型:typeAstruct{f1stringf2*B}typeB{f1stringf2string}当我尝试遍历*B时,我得到了:"reflect:callofreflect.Value.FieldonptrValue"输出的值如下:代码:funcprocessNode(v*reflect.Value,treflect.Type,datainterface{})error{fori:=0;i我想知道,如何遍历引用值?(迭代在A上运行良好) 最佳答案

go - golang asm 代码中的未知 "ptr"变量

最近刚开始看atomic.LoadUint64的源码,在下面的asm代码中得到了一个未知的变量“ptr”:TEXTruntime∕internal∕atomic·Load64(SB),NOSPLIT,$0-12MOVLptr+0(FP),AXTESTL$7,AXJZ2(PC)MOVL0,AX//crashwithnilptrderefMOVQ(AX),M0MOVQM0,ret+4(FP)EMMSRET我找不到这个变量的声明,也找不到任何关于这个变量的文档,谁能告诉我吗? 最佳答案 AQuickGuidetoGo'sAssembler

reflection - Reflect 认为 struct Value 也是一个 ptr?

我有一个类似这个演示的数据结构。如您所见,foo有一个指向bar的嵌入式指针:typefoostruct{*bar}typebarstruct{S[]byte}我正在像这样使用reflect包:functest(xinterface{}){varv=reflect.ValueOf(x)ifv.Kind()==reflect.Struct{fmt.Println("wasastruct")//panic:reflect:callofreflect.Value.ElemonstructValue//v=v.Elem()//panic:reflect:callofreflect.Value.

c++ - eclipse 中的 unique_ptr 自动完成

我正在玩unique_ptr。在我的lastpost人们通过在编译期间指定-std=c++0x帮助我编译了一个使用此指针的程序。现在我想知道是否有任何方法可以指示eclipse在自动完成时考虑c++11?unique_ptr不在std::命名空间的列表中,我也找不到与unique_ptr关联的方法(重置、移动...)。谢谢瓦赫德 最佳答案 “内存”头文件(可能位于/usr/include/c++/4.9/memory)仅包含“unique_ptr.h”和“shared_ptr.h”(可能位于/usr/include/c++/4.9/