草庐IT

memory_block

全部标签

c++ - 对原子类 : memory_order_relaxed 感到困惑

我正在研究这个网站:https://gcc.gnu.org/wiki/Atomic/GCCMM/AtomicSync,这对理解关于原子类的话题非常有帮助。但是这个放松模式的例子很难理解:/*Thread1:*/y.store(20,memory_order_relaxed)x.store(10,memory_order_relaxed)/*Thread2*/if(x.load(memory_order_relaxed)==10){assert(y.load(memory_order_relaxed)==20)/*assertA*/y.store(10,memory_order_rela

c++ - 搜索巨大的排序数据 block

我在磁盘中有大量数据记录,这些数据记录是根据某些键按排序顺序排列的。一次将数据一个block(数千条记录)读入内存。我必须搜索并显示与某个键匹配的所有记录。我在考虑一些基于二进制搜索的算法,但我在这里有一些限制。只能从block的开头在block内按顺序查找记录。具有相同键的记录可以跨越多个block(如图所示-8个跨度)。在二进制搜索中,如果我正在加载中间block并且如果第一条记录匹配,那么我必须扫描匹配block之前的block。谁能帮我设计一个可以在C++中运行的有效策略。使用线性搜索方法是否有效。+---+|1|Block1|3||3||4|+---+|4|Block2|6|

c++ - try/catch block 中的完整代码

我想知道,将完整代码放在tryblock中是好的做法还是我应该只放置我认为它会导致特定异常的代码?我是否应该始终捕获基本异常代码1:tryblock中的完整代码myFunction(){try{.........CodewithchanceofOneException.............}catch(OneExceptione){............}catch(Exceptione){..............}}代码2:只有tryblock中有机会Exception的代码myFunction(){.......try{CodewithchanceofOneExcepti

c++ - 有没有办法修改这个 C++ 结构赋值 block 以直接在 C 中工作

以下代码驻留在设备中,当通过IrDA套接字连接枚举时,该设备将发出deviceId(LXdeviceInfo)。这只是为了解释为什么我想保持数据类型尽可能相似,但能够使用ansiC编译对于windows.h和af_irda.h的#includes,以下代码在C++编译器中编译时没有错误,但在C编译器中会在结构赋值下方中断(请参阅此处的错误)。理想情况下,我想将结构成员'ID'初始化为一个字符数组,同时保持它在原始代码中的类型,这样我就可以像它出现的那样测试LXdeviceInfo的值当从PC套接字连接调用设备时查询它。有什么方法可以修改这个赋值block以直接在C中工作吗?#inclu

C++11:memory_order_relaxed 和 memory_order_consume 的区别

我现在正在学习C++11memoryordermodel并想了解memory_order_relaxed和memory_order_consume之间的区别。具体来说,我正在寻找一个无法将memory_order_consume替换为memory_order_relaxed的简单示例。有一个优秀的post它详细阐述了一个简单但非常具有说明性的示例,其中可以应用memory_order_consume。以下是文字复制粘贴。例子:atomicGuard(nullptr);intPayload=0;制作人:Payload=42;Guard.store(&Payload,memory_orde

c++ - 如何在中等规模的项目中诊断 g++ 错误 "cc1plus.exe: out of memory allocating 838860800 bytes"?

这个问题在这里已经有了答案:Running'gcc'onC++sourcefileonLinuxgives"cc1plus:outofmemoryallocating..."errormessage(2个答案)关闭6年前。我正在尝试移植我的C++library使用基本的g++makefile(它在VisualStudio中编译得很好)。我现在尝试编译的部分大约有45000行代码。库本身编译正常,但是当我尝试将它包含到控制台界面应用程序中时,编译器崩溃并显示以下消息,没有其他消息:cc1plus.exe:outofmemoryallocating838860800bytes当我包含项目的

c++ - Try/Catch block 替换了析构函数中的方法 block

我最近的任务是查找我们部分代码中的内存泄漏。泄漏最终出现在特定对象的析构函数中……我发现了一些非常奇怪的东西。一位前同事写道:File::~File()try{Clear();}catch(...){Log("caughtexception");}文件类继承自一些基类。我的第一个问题是:这是严格合法的C++吗?它在VisualStudio2008中编译,但我向几个friend/同事展示了它,他们对它的工作感到非常震惊。它实际上并没有按预期工作,但是:这个对象继承的基类有一个现在永远不会调用的析构函数(相反,如果你只是将析构函数包装在一个常规方法block中,让try/catch作为该方

c++ - 为什么当我抛出派生类的对象时,基类的 catch block 会捕获异常?

这个问题在这里已经有了答案:WhyBaseClasscatchblockcatchderivedclassobject?(3个答案)Whythrowatderivedclasscatchesbybase?(5个答案)关闭5年前。如果我正在传递派生类的对象,那么应该调用派生类的catchblock。但是输出显示异常被基类捕获。为什么?#includeusingnamespacestd;classBase{};classDerived:publicBase{};intmain(){Derivedd;//someotherstufftry{//Somemonitoredcodethrowd;

c++ - 如何在单个案例中通过多个 catch block 使异常处理落空?

假设您有以下层次结构。你有一个基类Animal,它有一堆子类,比如Cat、Mouse、Dog等。现在,我们有以下场景:voidftn(){throwDog();}intmain(){try{ftn();}catch(Dog&d){//somedogspecificcode}catch(Cat&c){//somecatspecificcode}catch(Animal&a){//somegenericanimalcodethatIwantallexceptionstoalsorun}}所以,我想要的是,即使抛出Dog,我也希望执行Dogcatch案例,以及执行Animalcatch案例。

三种不同的控制 CRM UI Assignment Block 显示与否的技术

WebClientUI作为一种极佳的企业级应用UI开发技术,给开发人员提供了强大而灵活选择来实现用户的各种需求。在实际的CRM实施项目中,一个常见的要求是,概览页面中的某个分配块只能在某种情况下显示,例如被ABAPbusinessswitch开启与否的控制。本文以下是通过ABAP代码控制一个赋值块的可见性的三种方法。方法一:动态视图分离这种做法的思路是,redefine概述页面的控制器类的方法DETACH_STATIC_OVW_VIEWS.所有放入内部表rt_viewid中的视图将在运行时被UI框架隐藏。下面的代码是一个示意,开发人员可以评估第3行中的某些条件,如果满足条件,则赋值块Searc