草庐IT

weakly-referenced

全部标签

c++ - 为什么不能从 unique_ptr 构造weak_ptr?

如果我理解正确,weak_ptr不会增加托管对象的引用计数,因此它不代表所有权。它只是让您访问一个对象,该对象的生命周期由其他人管理。所以我真的不明白为什么不能从unique_ptr构造weak_ptr,而只能从shared_ptr构造。有人能简单解释一下吗? 最佳答案 如果您考虑一下,weak_ptr必须引用对象本身以外的其他内容。这是因为对象可以不复存在(当没有更多的强指针指向它时)并且weak_ptr仍然必须引用包含对象不再存在的信息的东西。使用shared_ptr,该东西就是包含引用计数的东西。但是对于unique_ptr,

c++ - shared_ptr<> 对 weak_ptr<> 就像 unique_ptr<> 对...什么?

在C++11中,您可以使用shared_ptr建立与对象或变量的所有权关系和weak_ptr以非拥有的方式安全地引用该对象。您也可以使用unique_ptr建立与对象或变量的所有权关系。但是,如果其他非拥有对象也想引用该对象怎么办?weak_ptr在这种情况下没有帮助。原始指针很有帮助,但也带来了各种缺点(例如,它们可以是automaticallyinitializedtonullptr,但这是通过与std::*_ptr类型不一致的技术来实现的)。weak_ptr的等价物是什么?对于通过unique_ptr拥有的对象的非拥有引用?这是一个清晰的示例,类似于我正在开发的游戏中的某些内容。

c++ - weak_ptr 是如何工作的?

我了解如何使用weak_ptr和shared_ptr。通过计算对象中的引用数,我了解shared_ptr的工作原理。weak_ptr是如何工作的?我尝试通读boost源代码,但我对boost不够熟悉,无法理解它使用的所有东西。谢谢。 最佳答案 shared_ptr使用额外的“计数器”对象(又名“共享计数”或“控制block”)来存储引用计数。(顺便说一句:那个“计数器”对象也存储了删除器。)每个shared_ptr和weak_ptr都包含一个指向实际指针对象的指针,以及一个指向“计数器”对象的第二个指针。为了实现weak_ptr,“

c++ - shared_ptr 和 weak_ptr 的区别

我正在阅读ScottMeyers“EffectiveC++”一书。有人提到有tr1::shared_ptr和tr1::weak_ptr就像内置指针一样,但它们会跟踪有多少tr1::shared_ptr指向一个对象。这称为引用计数。这可以很好地防止非循环数据结构中的资源泄漏,但是如果两个或多个对象包含tr1::shared_ptrs从而形成一个循环,则该循环可能会使彼此的引用计数保持在零以上,即使当所有指向循环的外部指针都已被销毁。这就是tr1::weak_ptrs的用武之地。我的问题是循环数据结构如何使引用计数高于零。我请求一个示例C++程序。weak_ptrs是如何解决问题的?(再次

c++ - 理解 C++11 中的 std::atomic::compare_exchange_weak()

boolcompare_exchange_weak(T&expected,Tval,..);compare_exchange_weak()是C++11中提供的比较交换原语之一。它是弱从某种意义上说,即使对象的值等于expected,它也会返回false。.这是由于虚假故障在一些使用一系列指令(而不是x86上的指令)来实现它的平台上。在这样的平台上,上下文切换、另一个线程重新加载相同地址(或缓存行)等可能会使原语失败。它是spurious因为它不是操作失败的对象的值(不等于expected)。相反,这是一种时间问题。但令我困惑的是C++11标准(ISO/IEC14882)中所说的,29.

objective-c - Xcode 7.3 无法使用手动引用计数在文件中创建 __weak 引用

更新到Xcode7.3后,在pod文件中抛出错误Cannotcreate__weakreferenceinfileusingmanualreferencecount。有人解决了这个问题吗? 最佳答案 将BuildSettings->AppleLLVM7.1-Language-ObjectiveC->WeakReferencesinManualRetainRelease设置为YES。取自AppleDevelopersForums-Xcode7.3b4,non-arc,cannotcreate__weakreference.

c++ - 错误 LNK2019 : unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup

当我运行下面的简单代码时,我有两个错误如下:#include#includeusingnamespace::std;templateclassStack{public:Stack(intmax):stack(newType[max]),top(-1),maxsize(max){}~Stack(void){delete[]stack;}voidPush(Type&val);voidPop(void){if(top>=0)--top;}Type&Top(void){returnstack[top];}//friendostream&operatorvoidStack::Push(Type&

c# - 在分支之间转换时生成错误 : Your project is not referencing the ".NETFramework,Version=v4.7.2" framework

我们正在使用Git,并且我们有一个针对完整网络框架的解决方案。几天前,我开始将解决方案迁移到.net核心。不幸的是,出现了一些事情,让我回到了主分支(其中包含完整的.NET框架的代码)。每当我尝试构建应用程序时,都会收到以下错误:1>D:\ProgramFiles(x86)\MicrosoftVisualStudio\2017\Community\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets(186,5):error:Yourprojectisnotreferencingthe".NETFramework,Version=v4

java - "non-static method cannot be referenced from a static context"背后的原因是什么?

这个问题在这里已经有了答案:Non-staticvariablecannotbereferencedfromastaticcontext(15个回答)关闭7年前。社区审核了是否重新打开此问题9个月前并关闭:原始关闭原因未解决非常常见的初学者错误是当您尝试“静态”使用类属性而不创建该类的实例时。它会给您留下上述错误消息:Youcaneithermakethenonstaticmethodstaticormakeaninstanceofthatclasstouseitsproperties.这背后的原因是什么?我关心的不是解决方案,而是原因。privatejava.util.Listsom

ruby-on-rails - 使用 add_foreign_key : 'column "user_id"referenced in foreign key constraint does not exist' 进行 Rails 迁移

(Rails是5.0.0版本,Ruby是2.3.0p0)我想在我的用户表和卡片表之间创建关联。我已将belongs_to:user添加到Cards模型,并将has_many:cards添加到Users模型,并创建了一个迁移:classAddUserIdToCard当我运行rakedb:migrate时,我收到错误:ActiveRecord::StatementInvalid:PG::UndefinedColumn:ERROR:column"user_id"referencedinforeignkeyconstraintdoesnotexist:ALTERTABLE"cards"ADDC