草庐IT

Non-blocking

全部标签

c++ - 区 block 链 Hyperledger 私钥漏洞

这个创建硬币的方法有一个小问题。我遇到了一些错误,我有点迷路了。当我验证一个secret地址私钥时它工作正常,当我在向它发送奖励之前打印它时显示正常,但是当我向它发送奖励时,它们会转到一个酒吧地址。谁能发现这个错误?boolCWallet::CreateCoinStake(constCKeyStore&keystore,unsignedintnBits,int64_tnSearchInterval,int64_tnFees,CTransaction&txNew,CKey&key){CBlockIndex*pindexPrev=pindexBest;CBigNumbnTargetPerC

c++ - 如果一个对象在本地创建并在 C++ 中作为异常抛出,那么本地对象如何在其范围之外有效,即在 catch block 中?

在tryblock中,调用函数“fun()”。在“fun”中创建了类“abc”的本地对象并抛出异常。这个本地对象被捕获在“catch”block中,并且打印了一个正确的值。由于这个对象是在本地创建的,它不应该打印“0(默认值)”,因为调用throw时会发生堆栈展开。#includeusingnamespacestd;classabc{intvar;public:abc():abc(0){}abc(inti):var(i){}voidprint(){cout输出:里面试试内部乐趣()里面abc:10我的期望:里面试试内部乐趣()内abc:0 最佳答案

c++ - 像访问文件流一样访问一 block 内存(/C/C++数组)

有没有办法在C(或C++)中做到这一点?背景信息:我将逐行读取一个内存块或一个大文件并一次处理这些行,我懒得把同样的东西写两次,一次用于内存块,一次用于文件流。如果需要使用文件流版本,那么该文件将无法装入内存。可以理解的是,我可以将内存块保存到文件中,然后使用文件流访问相同的数据,但这似乎是在浪费计算机时间。我知道linux系统上的/dev/shm。有没有更可移植的东西在语言层(C或C++)为我提供相同类型的抽象? 最佳答案 在C中你可以使用sprintf和sscanf,在C++中有std::stringstream使用字符串构造的

C++: 奇怪的 "Request for member X of Y which is of non-class type Z"

以下程序,用g++4.6编译,产生错误requestformember‘y’in‘a2’,whichisofnon-classtype‘A(B)’最后一行:#includetemplateclassA{public:Ty;A(Tx):y(x){}};classB{public:intu;B(intv):u(v){}};intmain(){intv=10;Bb1(v);//worksAa1(b1);//doesnotwork(theerroriswhena2isused)Aa2(B(v));//works//Aa2((B(v)));std::cout从代码中包含的工作变体可以看出,在A的

c++ - 为什么 shared_ptr<> 必须分别为控制 block 和管理对象分配?

此链接问题询问是否make_shared函数和shared_ptr构造函数不同。Whathappenswhenusingmake_shared部分答案是make_shared通常会在一次分配中为指向对象和智能指针控制block分配内存。shared_ptr构造函数使用两个分配。cppreference声明构造函数“必须”这样做,但没有给出任何理由。这是为什么?出于某种原因这是不可能的吗?还是因为其他原因被标准禁止? 最佳答案 想想std::shared_ptr构造函数是如何工作的:std::shared_ptr(newFoo());

c++ - 使用异常的 C++ 程序是否需要在其主要函数中包含 try/catch block ?

如果异常由C++代码抛出但未被捕获,则会导致SIGABRT。有些系统只打印“Abort”,有些系统还会打印e.what()的内容。问题是:C++标准是否规定main函数中需要try/catchblock才能将程序视为行为良好的程序,还是C++只是默默地依赖系统来处理它? 最佳答案 如C++17standarddraft中所述,在第18.3.9节[except.handle]中:Ifnomatchinghandlerisfound,thefunctionstd::terminate()iscalled;whetherornotthes

c++ - 何时以及为何会生成 std​​::__non_rtti_object 异常?

我正在使用VisualStudio并执行有效的动态转换。启用RTTI。编辑:更新代码使其更真实structbase{virtualbase*Clone(){base*ptr=newbase;CopyValuesTo(ptr);returnptr;}virtualvoidCopyValuesTo(base*ptr){...}virtual~base(){}}structderived:publicbase{virtualbase*Clone(){derived*ptr=newderived;CopyValuesTo(ptr);returnptr;}virtualvoidCopyValue

c++ - 哪个更好 : a lying copy constructor or a non-standard one?

我有一个包含不可复制句柄的C++类。但是,该类必须有一个复制构造函数。因此,我实现了一个将句柄的所有权转移到新对象的方法(如下所示),classFoo{public:Foo():h_(INVALID_HANDLE_VALUE){};//transferthehandletothenewinstanceFoo(constFoo&other):h_(other.Detach()){};~Foo(){if(INVALID_HANDLE_VALUE!=h_)CloseHandle(h_);};//otherinterestingfunctions...private:///disallowas

C++ 控制台输入 block 所以我不能杀死线程

我的程序有许多不同的线程处理不同的事情,其中​​一个处理用户输入。其他线程没有太多阻塞调用的方式,那些阻塞的线程是基于网络的,因此当套接字关闭时将被中断或正常返回。然而,用户线程调用了std::cin以获取用户输入。这样做的效果是,当所有其他线程都死了时,用户线程仍在阻塞用户输入,并且只会在下一次输入时死掉。有什么方法可以让我在阻塞之前检查是否有任何用户输入要抓取?我知道cin.peek()存在,但根据我的经验,如果没有任何内容可读,它就会阻塞。假设我正确使用它我的代码基本上是一个无限循环,当另一个线程切换条件变量时停止:voiddoLoop(){while(running)//run

c++ - 为什么 VS 和 gcc 在这里调用不同的转换运算符(const vs non-const)?

这段代码当然很蠢,但我写它只是为了说明问题。在这里:#includeusingnamespacestd;structfoo{inta=42;templateoperatorT*(){cout(&a);}templateoperatorconstT*()const{cout(&a);}templateTget(){coutoperatorT();}};intmain(){foomyFoo;cout()使用VisualStudio2019(ISOC++17,/Ox)编译时的输出是:Tget()operatorconstT*()const42gcc8.3(-std=c++17,-O3)的输出