草庐IT

signed-overflow

全部标签

c++ - 将 VC++ 的 __try/__except EXCEPTION_STACK_OVERFLOW 移植到 MinGW

我正在尝试使用VC++的try-except语句将一些代码移植到MinGW:boolsuccess=true;__try{//...}__except((EXCEPTION_STACK_OVERFLOW==GetExceptionCode())?EXCEPTION_EXECUTE_HANDLER:EXCEPTION_CONTINUE_SEARCH){success=false;_resetstkoflw();}returnsuccess;是否可以使用MinGWg++编写捕获堆栈溢出异常的代码? 最佳答案 您需要手动调用注册异常处理的

c++ - 'comparison between signed and unsigned integer expressions' 真的会导致错误吗?

通常我使用的对象会有(有符号的)int参数(例如intiSize),这些参数最终会存储某物应该有多大。同时,我经常将它们初始化为-1以表示对象(等)尚未设置/尚未填充/尚未准备好使用。当我执行类似if(iSize>=someVector.size()){...}的操作时,我经常以警告结束comparisonbetweensignedandunsignedinteger.因此,名义上我不想使用unsignedint。在任何情况下这会导致错误或意外行为吗?如果不是:处理此问题的最佳方法是什么?如果我使用编译器标志-Wno-sign-compare我可能(假设地)错过我应该使用unsigne

c++ - MSVC++ : Strangeness with unsigned ints and overflow

我有以下代码:#includeusingnamespacestd;intmain(intargc,char*argv[]){stringa="a";for(unsignedinti=a.length()-1;i+1>=1;--i){if(i>=a.length()){cerr如果我在完全优化的MSVC中编译,我得到的输出是“-1?”。如果我在Debug模式下编译(没有优化),我不会得到任何输出(预期。)我认为标准保证无符号整数以可预测的方式溢出,因此当i=(unsignedint)(-1)、i+1=0时,循环条件i+1>=1失败。相反,测试以某种方式通过了。这是编译器错误,还是我在某处

c++ - Qt 安装程序框架 : How to sign the maintenancetool. exe

我在Windows上使用QtIFW2.0.1为我的应用程序构建了一个安装程序。当我们提供安装程序供下载时,我已经使用有效证书对安装程序可执行文件进行了签名。因此,在安装过程询问所需的访问权限时,我们的验证名称会显示出来。尽管如此,还是有一个unpleasantmessagebox如果用户通过maintenancetool.exe卸载、更新或更改我们的应用程序。如何提取maintenancetool.exe、对其进行签名并将其放回安装程序可执行文件中? 最佳答案 自2019年4月11日发布的QtInstallerFramework版本

c++ - 从 char* 到 signed char* 的转换

我看到了一段有效的C代码,我试图将其编译为C++,但出现了一个我无法理解的错误。char*t;signedchar*v=t;error:invalidconversionfromchar*tosignedchar*据我了解,char和signedchar在语义上是相同的,但仍被编译器视为不同。我知道错误是由这两种类型之间的差异引起的,我的问题是:为什么存在这种差异?据我所知,char是作为signedchar或unsignedchar实现的,因此它应该与两者相同或另一个。我咨询了thisquestion它没有回答我想知道的问题。 最佳答案

c++ - 缩小从 double 到 float 的转换 : is overflow behaviour guaranteed?

如果我试试这个floatf=(float)numeric_limits::infinity();或者实际上,尝试将任何大于floatmax的值转换为float,我能保证最终得到无穷大吗?它适用于GCC,但它是标准吗? 最佳答案 floatf=(float)numeric_limits::infinity();这保证设置f如果您的编译平台提供用于浮点计算的IEEE754算法(通常会提供),则为无穷大。Orindeed,trytocastanythingbiggerthanfloatmaxdowntoafloat,amIguarante

windows - CMD/windows 批处理 : how to pass a double quote and a larger than sign in a command argument?

我可以通过多种方式将双引号和大于号传递给任何命令:'"'、"\""、">"但是当我尝试将它们一起传递时C:\>echo"\">"Thesystemcannotfindthepathspecified.与"\"\>"相同。我可以使用单引号使其工作,但由于我已经处理了很多引号,所以我想保留所有内容双引号内。有什么办法可以避免吗?我在windows7上,但我相信这是一些向后兼容性“功能”,所以不确定此信息是否相关。编辑1:我认为Endoro的答案是正确的……但这并没有那么简单。CMD对^>的处理方式不同,具体取决于字符串中是否存在转义双引号。任何人都知道为什么?还是不同的转义方法?C:\>s

windows - STATUS_STACK_BUFFER_OVERRUN 和 STATUS_STACK_OVERFLOW 有什么区别?

我刚刚发现有一个STATUS_STACK_BUFFER_OVERRUN和一个STATUS_STACK_OVERFLOW。这两个有什么区别?我刚找到Stackoverflow(stackexhaustion)notthesameasstackbufferoverflow但要么它没有解释它,要么我不明白。你能帮帮我吗?问候托拜厄斯 最佳答案 考虑以下在内存中向下增长的堆栈:+----------------+|somedata||+----------------+|growthofstack|20-bytestring|V+-----

windows - Win32 EXCEPTION_INT_OVERFLOW 与 EXCEPTION_INT_DIVIDE_BY_ZERO

我对EXCEPTION_INT_OVERFLOW和EXCEPTION_INT_DIVIDE_BY_ZERO异常有疑问。Windows将捕获由IDIV指令生成的#DE错误,并最终使用这两个代码之一生成SEH异常。我的问题是它如何区分这两种情况?Intel手册中关于idiv的信息表明它会在“被零除”和“下溢情况”下生成#DE。我快速浏览了intel手册第3卷中关于#DE错误的部分,我能收集到的最好的信息是操作系统必须解码DIV指令,加载除数参数,然后进行比较归零。虽然我觉得这有点疯狂。为什么芯片设计者不使用某种标志来区分错误的2个原因?我觉得我一定错过了什么。有谁确切知道操作系统如何区分这

windows - IIS6 : Create/install SSL self-signed cert from command line

我想在IIS6中为网站自动设置SSL。似乎可以使用selfSSL和certutil来执行此操作,但证书对我来说是新的,我不确定如何将它们放在一起。据我了解,我需要:创建证书将证书分配给网站向网站添加安全(SSL/443)绑定(bind)如果站点证书已经创建,我还想避免创建新证书。这样我就不会得到一堆多余的证书。 最佳答案 我建议您查看IIS6资源工具包:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17275资源工具包中有一个名为selfssl