草庐IT

shared_buffers

全部标签

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++ - 将数据填充到本地的recv-Buffer中

我挂接到Windows中的send和recv函数。在某些情况下,我会修改将要发送和读取的数据。在send函数中,这很容易。我挂接到函数中,修改源缓冲区,然后将其传递给原始函数。但是对于recv函数来说,这个就比较复杂了。当我调用了原始的recv函数并决定添加更多数据时,我需要将数据插入本地队列,以便下一次调用recv会返回那些字节。有什么想法吗? 最佳答案 你的过滤器方法应该调用recv()然后将你的数据添加到缓冲区的末尾,调整返回的读取计数,然后返回它。无需“将数据推送到本地队列”。

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[]

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

【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内存泄漏  什么是内存泄漏:  内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。  内存泄漏通常由于程序在设计上的缺陷或错误,例如动态分配内存后,未在合适的时间或无法正确释放该段内存,而导致的。内存泄漏通常需要程序员通过分析程序源代码

c++ - Protocol Buffer - 生成非内联访问器

我们在带有c#和c++代码的中型嵌入式系统中使用ProtocolBuffer(2.4.1)。我们使用protobufs来隔离我们的托管层和native层,以及一个易于维护的序列化层(出于好奇,我们本来可以使用Pinvoke,但我们还必须在测试/模拟器上的单独进程中运行native代码)。我们的系统有很多DLL,我在它自己的DLL中有生成的nativeprotobuf代码,这样系统的其他部分就不必直接链接到生成的代码中。我遇到的问题是所有生成的访问器都是内联,例如:inlineconst::MyProtoClassName::MyField&MyProtoClassName::myfie

ES启动报错:Caused by: java.net.SocketException: No buffer space available (maximum connections reached?)

问题描述:线上服务的es突然挂掉导致网站无法正常访问,看了下是es服务停止了,于是重启后出现了如下报错,对于报错信息的重点关注:Causedby:java.net.SocketException:Nobufferspaceavailable(maximumconnectionsreached?):connect看报错信息是连接数太多,耗尽了某种资源。查看当前所有的连接,执行命令:netstat-ano,发现大量的TCP连接。尤其是应用的80端口的连接数达到了65535,是应用中调用连接过多导致资源耗尽无法启动es,先关停java应用,然后重启es解决报错信息:[2023-02-28T14:52

SEEDLabs Buffer Overflow

SEEDLabsBufferOverflow实验原理攻击目标代码中含有以下代码片段:intbof(char*str){charbuffer[BUF_SIZE];strcpy(buffer,str);return1;}intmain(intargc,char**argv){charstr[517];intlength=fread(str,sizeof(char),517,stdin);bod(str);...return1;}fread()有长度限制,因此能保证str从stdin中读取517个字节;但函数intbof(char*)中,strcpy()并不会考虑长度限制,因此本来准备写入buffe