jjzjj

Overflow

全部标签

c++ - C/C++ 中两个 INT_MAX 数字的乘积不正确

在我的例子中,两个INT_MAX数字的乘积是296447233,这是不正确的。longlongintproduct=0;product=2137483647*2137483647;printf("product:%lli\n",product);我做错了什么,如何纠正??谢谢! 最佳答案 你的两个2137483647都是int类型。所以他们保持那种类型并溢出。让它们longlong:product=2137483647LL*2137483647LL;或投:product=(longlong)2137483647*2137483647

c++ - 如何计算形式为 (a*b)%c 的模数?

如何计算形式为(a*b)%c的模数?我想计算两个几乎处于溢出阶段的int数的乘积...这里c也是int 最佳答案 (a*b)%c==((a%c)*(b%c))%c 关于c++-如何计算形式为(a*b)%c的模数?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5915808/

c++ - C++中的自动溢出检测?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:BestwaytodetectintegeroverflowinC/C++当我在C++中使用大量数字编写代码时,我常常无法判断何时发生溢出,即使我使用的是longlong或其他64位数据类型。有没有比观察错误值更有效的方法来检测何时发生溢出?

c++ - Valgrind 报告 "brk segment overflow in thread #1"

这个问题在这里已经有了答案:Valgrindreportingasegmentoverflow(5个答案)关闭5年前。我想知道这条消息意味着什么:==18151==brksegmentoverflowinthread#1:can'tgrowto0x4a26000请注意,代码运行良好并且输出正确。我应该忽略这条消息吗?这是什么意思?

c++ - std::map 在低内存情况下导致 "stack overflow"

此应用程序正在使用C++在WindowsXP上的VS2010中开发。当计算机在物理内存上运行时非常低(并且页面文件被禁用,因为它是我们的测试用例),这行代码:std::map>MyMap;在malloc.c中导致“堆栈溢出”错误'returnHeapAlloc(_crtheap,0,size?size:1);'MyApp.exe中0x7c90e8e5处的未处理异常:0xC00000FD:堆栈溢出。此调用是从应用程序的线程之一进行的。如果内存不足是错误,它应该抛出bad_alloc谁能告诉我这里可能是什么原因。编辑:这是实际堆栈的样子ntdll.dll!7c90e8e5()[Frames

c++ - (如何)你如何处理 C++ 代码中可能出现的整数溢出?

时不时地,尤其是在对某些代码库进行64位构建时,我注意到在很多情况下都可能出现整数溢出。最常见的情况是我做这样的事情://CreatesaQPixmapoutofsomeblockofdata;thisfunctioncomesfromlibraryAQPixmapcreateFromData(constchar*data,unsignedintlen);conststd::vectorbuf=createScreenShot();returncreateFromData(&buf[0],buf.size());//事情是std::vector::size()很好地返回了一个size_

c++ - libpng png_set_add_alpha | png_set_filler 错误 : sequential row overflow

我正在尝试使用C读取PNG文件以用于OpenCL。OpenCL不支持24位RGB图像,因此我需要将数据从RGB扩展到RGBA。我使用的PNG都是24位的,因此可以避免头痛。我曾尝试使用png_set_filler和png_set_add_alpha,我认为它们大致相同来解决问题,但它们都会导致此错误:libpngerror:sequentialrowoverflow这里是完整的函数:intLoadPNG24(unsignedchar**pixelBuffer,constchar*filename,unsignedint*width,unsignedint*height){png_byt

c++ - gcc "overflow in expression"而等效等效表达式工作正常

这是我的代码#includestaticconstunsignedlonglongintxx=(36*36*36*36)*(36*36*36*36);staticconstunsignedlonglonginty=36*36*36*36;staticconstunsignedlonglongintyy=y*y;intmain(){std::cout这是编译输出#g++-std=c++11test.cpp-otesttest.cpp:2:62:warning:integeroverflowinexpression[-Woverflow]staticconstunsignedlonglon

c++ - 如何保证在 Visual Studio 2005 下的 C++ 中捕获 EXCEPTION_STACK_OVERFLOW 结构化异常?

背景我有一个带有Poof-Crash[1]的应用程序。我相当确定这是由于堆栈损坏造成的。应用程序是多线程的。我正在使用“启用C++异常:是的,带有SEH异常(/EHa)”进行编译。我编写了一个SE翻译器函数并用它调用了_set_se_translator()。我已经为set_terminate()和set_unexpected()编写了函数并进行了设置。为了获得StackOverflow,我必须在高负载下以Release模式运行几天。在调试器下运行不是一种选择,因为应用程序的执行速度不足以达到查看问题所需的运行时间。我可以通过在执行其中一个函数时添加无限递归来模拟该问题,从而测试是否捕

c++ - 继承 ostream 和 streambuf 问题与 xsputn 和溢出

我一直在研究创建我自己的ostream以及一个streambuf来处理我的ostream的缓冲区。我实际上大部分都在工作,我可以将(我浏览了代码,我看到流正在调用do_put,然后是f_put,它最终尝试一次将float1字符放入缓冲区。如果我的缓冲区没有空间,我可以让它调用我的虚函数overflow(intc)的实现,从而获得float和int的数据。现在问题来了,我需要知道float何时完成放入缓冲区。或者换句话说,我需要知道这是最后一次为流式传输的特定值调用溢出的时间。xsputn对我有用的原因是因为我预先获得了整个值及其长度。所以我可以将它复制到缓冲区中,然后调用等待缓冲区已满