overflow相关内容
我是比较新的C和想知道如何prevent从输入溢出... 因此,例如,我有: scanf函数(“%d个”,&安培; A); 其中a是整数 所以我我可以做些什么来进入一个数字,比最大的整数更大prevent人吗?由于问题的约束我的工作,你必须使用 scanf函数。我该如何去限制输入? 先谢谢了。 解决方案 “提斯非常具有挑战性的 prevent 的用户输入。结果 有没有神奇的手,伸
..
当输入字符串超过了predefined限制我面临着与fgets一个小问题。 考虑下面的例子: 的(指数= 0;指数 - LT;最大;指数++) {printf的(“请输入%D弦”,指数+ 1) 如果(与fgets(输入,MAXLEN,标准输入)) { 的printf(“该字符串的字
..
我遇到了一些C code我写了一个错误,而这是比较容易解决,我希望能够更好地理解它背后的问题。本质上发生了什么事是我有两个无符号整数(uint32_t的,其实),当应用于模操作,得到一个负数,已被包裹了一些未签名等同,是这样的“大”。下面是一个例子程序来演示: 的#include<&stdio.h中GT; #包括LT&;&stdint.h GT;INT主(INT ARGC,CHAR *的a
..
可能重复:结果
..
GCC产生浮code引发 SIGFPE 以下code: 的#include<&limits.h中GT; INT X = -1; 诠释的main() { 返回INT_MIN%X; } 不过,我可以找到标准中没有声明这code调用未定义或实现定义的行为。至于我可以告诉大家,它需要返回0。这是海湾合作委员会中的一个bug还是我失去了一些特殊例外的标准使? 解决方案 您可能是正确的
..
据了解,大局部/全局变量可能会导致堆栈溢出。 我知道,使用指针和在内存中分配空间有助于克服这个问题。 但它是唯一的选择?如果我发生什么(或需要)在全球范围内过于许多指针? 关于堆栈空间:是一个全球性结构类型的变量发生在栈空间,或者就像一个指针?我是否需要以减少堆栈的负载创建一个结构体变量类型的指针? 执行以下操作code也分配内存为char **命名变量 BIG ? //在头文
..
我听说过用gets()函数是C编程不好,它使用与fgets更安全......所以我使用与fgets。不过,我遇到一个问题,与fgets:我进了太多字符,不知何故,它溢出。 如何摆脱多余的输入字符? 字符答案[4]; 烧焦ANSWER2 [4];与fgets(答案的sizeof(答案),标准输入); 的printf(“答案:%S \\ n”,答案);与fgets(ANSWER2,sizeof的(
..
我的朋友最近完成了黑客的挑战,并把它交给我(二进制和源代码)。我想问这里之前我问他小费,因为我想自己做:) 我已经经历,但我在努力寻找漏洞。 的#include< alloca.h> #包括LT&;&stdio.h中GT; #包括LT&;&string.h中GT; #包括LT&;&stdlib.h中GT;静态无效的用法(为const char * argv0){ 的prin
..
可能重复:结果 检测C / C整数溢出的最佳方式++ 的不,这不是重复。问题是相同的,但问题是不同的。的 gcc编译器可以优化掉溢出检查(与-O2),例如: INT A,B; B = ABS(一); //将溢出如果= 0x80000000的 如果(B&小于0)的printf(“溢出”); //优化掉 gcc的人认为,这是不是一个错误。溢出是未定义的行为,按照C标准,它允许编译器
..
我在C整数工作,努力探索更多的溢出是如何发生的时候再打开。 我注意到,当我加了两个正数,其中溢出的总和,我总是得到一个负数。 在另一方面,如果我添加了两个负数,其中溢出的总和,我总是有一个正数(包括0)。 我做了几个实验,但我想知道这是不是真的对每一个案件。 解决方案 整数溢出在C未定义的行为。 ç说,一名前pression涉及整数溢的,如果通常的算术转换后的结果是结果的类型pse
..
此相关的问题是如何确定在编译时有符号类型的最大值:
..
有没有看到你的应用程序的堆栈空间有多大有什么堆栈使用的最高水印是在运行过程中?标准方式, 此外,在实际的溢出会发生什么可怕的呢? 它会崩溃,触发异常或信号?有没有一个标准或者是它在所有的系统和编译器有什么不同? 我在Windows,Linux和Macintosh寻找具体。 解决方案 在窗口堆栈溢出的例外将产生。 下面的窗口code说明了这一点: 的#include<&std
..
我要寻找一个有效的(可选标准,优雅,易于实现的)解决方案,以繁殖比较大的数字,并将结果存储到一个或几个整数: 让说我有声明如下两个64位的整数: uint64_t中一个= XXX,B = YYY; 当我这样做 A * B ,我怎么能检测如果操作导致溢出,在这种情况下,店里进的地方? 请注意,我不希望因为我有我存储数字的方式限制使用任何大数量的库。 感谢 解决方案 检测: X = A
..
我刚才已经回答这个问题,该问为什么迭代直到晚上10十亿在for循环需要这么长很多(中OP实际上10分钟后中止它),比迭代,直到1十亿: 为(i = 0; I<百亿;我++) 现在我和许多其他人的明显的答案是,这是由于迭代变量为32位(从未达1000十亿)和循环得到一个无限循环。 不过,虽然我意识到这个问题,我仍然不知道什么是真的要在里面编译? 由于文字不是用的 L时,应恕我直言,是类型
..
我用这个code: 而(scanf函数(“%S”,BUF)== 1){ 什么是至prevent可能缓冲区溢出的最佳方式,以便它可以传递随机长度的字符串? 我知道我可以通过调用例如限制输入字符串:而(scanf函数(“%20多岁”,BUF)== 1){ 不过我倒是preFER要能够处理任何用户输入。 或者不能被这个安全使用scanf函数做,我应该使用与fgets? 解决方案 在他们的
..
鉴于这种简单的结构: < DIV ID =“父”> < DIV ID =“孩子”> Lorem存有< / DIV> < / DIV> 这个CSS: #parent { 宽度:200像素; 高度:200像素; 填充:20像素; 溢出 - X:滚动; }#child { 宽度:500像素;
..
好了,所以我需要实现取决于返回零或一个方法,如果溢出X-Y的结果。 例:减(0x80000000,0x80000000)= 1, 减(0x80000000,0x70000000)= 0, 我不是在寻找这种方法的实现。我不明白哪一个假想导致溢出,这使得它几乎无从下手。为什么其中一个导致溢出?什么定义了减法溢出。 假设系统使用2的补数和整数的32位重presentation
..
我想一个方法来计算在Java中(X + Y)/ 2 任何两个整数X,Y。天真的方式,从如果X + Y> Integer.MAX_VALUE的,或LT问题的病人; Integer.MIN_VALUE的。 番石榴 IntMath uses此技术: 公共静态INT平均值(INT X,int y)对{ //计算的算术平均值的有效方法。 //替代(X + Y)/ 2失败较大的值。
..
我正在写在bash一个模拟分级脚本。它应该执行一个C程序,这将给一些输出(我重定向到一个文件中。)我想(1)做出了一定时间后,超时还(2)终止如果输出文件达到某个文件大小限制。不知道如何去其中任一。任何帮助吗?谢谢你。 解决方案 有一个GNU coreutil命令暂停做超时。 调查的ulimit -f 32 来的最大文件大小设置(以16昆明植物研究所,它计算在512字节块)。 异议:
..
我有一个背景图像的DIV元素,我希望它的DIV的尺寸外溢出(现在切断图像,因为图像比DIV大)。 这可能吗? 溢出:可见不起作用 解决方案 可以做到在另一种方式: #box { 保证金:-50px 0 0; 填充:50像素0 0 0; 背景:网址(/images/image.png)不重复; }
..