草庐IT

shared_memory

全部标签

c++ - 缺少 shared_ptr 和 weak_ptr 之间的相等性

虽然我明白为什么shared_ptr和unique_ptr没有operator==,但我想知道为什么没有shared_ptr和weak_ptr。特别是因为您可以通过对shared_ptr的引用创建一个weak_ptr。我假设在99%的时间里您都需要lhs.get()==rhs.get()。我现在会继续将其引入我的代码,除非有人能给我一个很好的理由,为什么不应该做这样的事情。 最佳答案 weak_ptr没有get()方法,因为您需要在访问底层指针之前显式锁定weak_ptr。明确这一点是一个深思熟虑的设计决定。如果转换是隐式的,那么很

具有 shared_ptr 成员的 C++ 复制构造函数

来自cplusplus.com:Rarelyyouwillcomeacrossaclassthatdoesnotcontainrawpointersyetthedefaultcopyconstructorisnotsufficient.Anexampleofthisiswhenyouhaveareference-countedobject.boost::shared_ptrisexample.有人可以详细说明一下吗?如果我们有一个包含boost::shared_ptr的类,当该类被复制构造时,不会得到复制构造-因此shared_ptr构造函数不会执行正确的事情并增加引用计数?例如,以下

c++ - std::enable_shared_from_this:是否允许在析构函数中调用 shared_from_this()?

#include#includestructA:publicstd::enable_shared_from_this{~A(){autothis_ptr=shared_from_this();//std::bad_weak_ptrexceptionhere.std::cout();a.reset();return0;}我在调用shared_from_this()时遇到std::bad_weak_ptr异常。是设计使然吗?是的,这可能很危险,因为在析构函数返回后无法使用此指针,但我看不出为什么在技术上不可能在这里获取指针的原因,因为共享指针对象显然仍然存在并且可以用过的。除了编写我自己的

c++ - 使用(和导出)boost::shared_ptr<T> 时出现错误 C2562

各位程序员好,我正在创建一个C++DLL库,我在其中使用了boost(1.55)的shared_ptr。然而,当我使用VisualStudio2013编译项目时,出现了一堆错误C2562:Error1errorC2562:'boost::shared_ptr::operator[]':'void'functionreturningavaluef:\developer\cplus\lib\boost_1_55_0\boost\smart_ptr\shared_ptr.hpp6631MEngineError2errorC2562:'boost::shared_ptr::operator[]

Stable Diffusion WebUI rtx 2060 6G 高清修复 爆显存torch.cuda.OutOfMemoryError: CUDA out of memory.

故障日志***Arguments:('task(9bknuv75x8gvtjn)','1girl,3d,architecture,blurry,blurrybackground,breasts,brownhair,building,cherryblossoms,city,cityscape,cosplayphoto,cowboyshot,day,depthoffield,eastasianarchitecture,flower,lips,longhair,lookingatviewer,mediumbreasts,midriff,motionblur,navel,outdoors,photo\

c++ - 如何将 boost::shared_ptr 作为指向 Windows 线程函数的指针传递?

如何将boost::shared_ptr作为指向Windows线程函数的指针传递?假设以下代码:test::start(){...._beginthreadex(NULL,0,&test::threadRun,&shared_from_this(),0,&threadID);......}/*thisisastaticfunction*/UINT__stdcalltest::threadRun(LPVOIDlpParam){shared_ptrk=*static_cast*>(lpParam);...}我认为这段代码不正确,你的想法是什么?我该怎么做?编辑:我通过boost::weak

运行代码报错:FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

一、背景    进公司拉取项目代码,npminstall拉取依赖后,运行控制台报错:FATALERROR:ReachedheaplimitAllocationfailed-JavaScriptheapoutofmemory二、原因分析        JavaScriptheapoutofmemory说的是 JavaScript运行内存不足,其实就是Node运行时内存不足。Node中通过script使用的内存只是很小的一部分(64位系统下约为1.4GB,32位系统下约为0.7GB),当我们的开发中包比较大时,就容易形成内存不足。三、解决方案    1、修改Node运行内存(推荐使用):关闭所有打

【C++】C++11——智能指针、内存泄漏、智能指针的使用和原理、RAII、auto_ptr、unique_ptr、shared_ptr、weak_ptr

文章目录C++117.智能指针7.1内存泄漏7.2智能指针的概念7.3智能指针的使用7.3.1auto_ptr7.3.2unique_ptr7.3.3shared_ptr7.3.4weak_ptrC++117.智能指针7.1内存泄漏  什么是内存泄漏:  内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。  内存泄漏通常由于程序在设计上的缺陷或错误,例如动态分配内存后,未在合适的时间或无法正确释放该段内存,而导致的。内存泄漏通常需要程序员通过分析程序源代码

windows - 内存映射文件 : how to monitor memory usage

我正在开发一个需要大量内存的32位最终用户应用程序。高达几千兆字节。我最近将我们的内部内存分配策略切换为使用受thisRaymondChenarticle.启发的无文件内存映射文件。它很好用。唯一的缺点是:如果我以这种方式分配1GB的内存,它不会显示在性能计数器的任何地方。当然,我确实知道分配了多少,其中有多少映射到我的地址空间,但我不知道它是如何分配到物理内存和页面文件上的。我想知道,如果不是出于任何其他原因,而不是为了调试而记录它。 最佳答案 解决方案是使用sysinternals'VMMap监控我的应用程序.这会按分配类型(我

es启动报错:OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0)

es启动报错:OpenJDK64-BitServerVMwarning:INFO:os::commit_memory(0x00000000c5330000,986513408,0)failed;原因:从报错来看是Notenoughspace,是es默认配置的内存较大,而本机内存较小导致的step1:查看空闲内存:free-hstep2:查看es配置的内存配置文件:cat/etc/elasticsearch/jvm.optionsstep3:修改上图jvm文件中的内存为合适大小step4:再次启动elasticsearchsystemctlstartelasticsearch