草庐IT

C++标准

全部标签

c++:本地数组定义与 malloc 调用

这有什么区别:somefunction(){...char*output;output=(char*)malloc((len*2)+1);...}还有这个:somefunction(){...charoutput[(len*2)+1];...}什么时候一个比另一个更合适?谢谢大家的回答。这是一个总结:例如。1是堆分配例如。2是栈分配栈上有大小限制,将其用于较小的分配你必须释放堆分配,否则会泄漏一旦函数退出,堆栈分配就不可访问堆分配在您释放它(或应用程序结束)之前是可访问的VLA不是标准C++的一部分欢迎指正。这里是对堆与栈之间区别的一些解释:Whatandwherearethestac

揭秘新型零知识证明漏洞:算术运算后缺乏多项式标准化

Salus向0xPARC的zk-bug-tracker库添加了一种新型的ZK漏洞,算术运算后缺乏多项式标准化,该漏洞由以太坊基金会PSE安全团队负责人KyleCharbonnet审核。该漏洞会破坏假设并导致错误的计算,或者导致通过rustpanic进行的拒绝服务攻击。为了更好地理解这个漏洞,我们将以Zendoo库中的一个具体实例进行说明。请大家对此类漏洞保持警惕。1.背景在代码中,多项式被表示为向量的形式。即,多项式a0+a1x+...+an-1xn-1+an*xn被表示为[a0,a1,...,an-1,an]。在ZK证明系统中,需要对多项式进行标准化操作,即将多项式的最高次项的系数调整为非零

java - Java 中的 BufferedReader 和 InputStreamReader

我最近开始接触Java,想了解一个大型应用程序的java模块。我遇到了这行java代码:Stringline=(newBufferedReader(newInputStreamReader(System.in))).readLine();这段java代码是做什么的。是否有与此等效的C/C++? 最佳答案 System.in是标准输入。InputStreamReader允许您关联一个从指定输入(在本例中为标准输入)读取的流,所以现在我们有了一个流。BufferedReader是帮助您处理流的“抽象”。例如,它实现了readLine而不

c++ - 我应该根据新标准还是旧标准(规范)来学习C++?

好吧,我正在考虑在未来几个月内进入C++开发领域(没有确定的日期)。我对语言(主要是C)以及OO、MI、模板、异常、模式、使用的STL的一些基础知识有点熟悉。现在我正处于我想深入掌握这门语言的时间点。自然而然的问题是我是否应该从当前的C++03或C++0x标准开始。考虑到新标准即将到来,并且可能会在未来许多年内保持不变,请提出从用户到大师的最佳方式。谢谢 最佳答案 我的建议是从中间开始。从C++03开始​​,但检查一些编译器已经经常提供的特性和C++0x库。截至目前,C++03是标准(不仅是形式上的,而且您会发现的大多数代码都是严格

c++ - c++ 标准是否禁止 void main() 原型(prototype)?

在C++标准1998版和2003版的3.6.1.2节中,Animplementationshallnotpredefinethemainfunction.Thisfunctionshallnotbeoverloaded.Itshallhaveareturntypeoftypeint,butotherwiseitstypeisimplementation-defined.我的母语不是英语,不知道“butotherwise”是什么意思,是禁止其他返回类型,还是给C++编译器编写者权利?那么答案是什么? 最佳答案 你引用的英语确实禁止声明

c++ - C 中的运算符重载

在C++中,我可以通过执行以下操作来更改特定类的运算符:MyClass::operator==/*Orsomeotheroperatorsuchas=,>,etc.*/(ConstMyClassrhs){/*DoStuff*/;}但是在C中没有类(默认情况下内置)。那么,我如何才能仅对一般函数进行运算符重载?例如,如果我没记错的话,导入stdlib.h会为您提供->运算符,它只是(*strcut_name).struct_element的语法糖。那么我如何在C中执行此操作?谢谢。 最佳答案 普通的旧C没有任何形式的运算符重载。->访

c++ - lib 中已经定义了标准库,导致链接器错误

不确定我在这里做错了什么,但说我有:foo.hclassfoo{public:intGet10(std::wstring);};foo.cppintfoo::Get10(std::wstringdir){return10;};如果我将该库连同相关头文件(foo.h)包含在另一个项目中并尝试调用foo的实例,我将其编译为一个库:foof;f.Get10(L"ABC");我收到一个链接器错误:Error1errorLNK2005:"public:__thiscallstd::_Container_base12::~_Container_base12(void)"(??1_Container

c++ - 访问超出 C 和 C++ 限制的数组

这个问题在这里已经有了答案:Accessinganarrayoutofboundsgivesnoerror,why?(18个答案)Arrayindexoutofboundbehavior(10个答案)关闭2年前。intdata[8];data[9]=1;C++标准对此有何规定?这是未定义的行为吗?至少C编译器(gcc-std=c99-pedantic-W-Wall)对此没有任何说明。

c++ - 在 C 中模拟 std::bind

我使用std::bind提供回调,同时通过首先绑定(bind)一些参数来抽象一些逻辑。即voidstart(){intsecret_id=43534;//Bindthesecret_idtothecallbackfunctionobjectstd::functioncb=std::bind(&callback,secret_id,std::placeholders::_1);do_action(cb);}voiddo_action(std::functioncb){std::stringresult="helloworld";//Dosomethings...//Callthecall

c++ - feof() 如何真正知道何时到达文件末尾?

我是C++的初学者,正在努力更好地理解feof()。我读过feof()标志仅在尝试读取文件末尾后才设置为true很多次初学者如果执行类似同时(!feof(文件))。不过,我想了解的是,它实际上如何解释已尝试读取文件末尾的内容?是否已经读入了整个文件并且已知字符数,或者是否有其他机制在起作用?我意识到这可能是某处重复的问题,但我一直无法找到它,可能是因为我不知道如何最好地表达我所问的内容。如果已经有答案,将不胜感激。谢谢。 最佳答案 无论C++库做什么,最终它都必须从文件中读取。在操作系统的某个地方,有一段代码最终会处理该读取。它从文