什么是整数溢出(Integer Overflow)?

整数溢出是指在某些计算机数据类型中,当它们到达其适用范围的末端时,它们的符号从正变为负,或反之亦然。在计算机范围中,整数数据类型具有循环范围,当它们达到其范围的一端时,它们会立即移动到其范围的另一端。这也称为整数...
整数溢出是指在某些计算机数据类型中,当它们到达其适用范围的末端时,它们的符号从正变为负,或反之亦然。在计算机范围中,整数数据类型具有循环范围,当它们达到其范围的一端时,它们会立即移动到其范围的另一端。这也称为整数溢出。C没有显式的数组边界检查。有符号整数可以包含-231到(231)-1之间的值范围。此整数的值不能为(-231)-1;相反,它递增到的下一个数字是在其范围的另一端:(231)-1).在其范围的末尾从负变为正是整数溢出的一个例子。同样地,一个整数的值不能是231;这个值会切换到它的范围的另一端变成-231。这个溢出在编程时会产生严重的后果。一个数组只能在整数类型允许,负索引不计算在内。如果程序员试图创建一个大于整数类型允许的数组,则可能会发生严重的内存错误,因为整数溢出会导致负索引。这在没有显式数组边界检查的语言中尤其危险,与C一样,当发生整数溢出时,也会发生相关类型的溢出,如缓冲区溢出、堆溢出和堆栈缓冲区溢出。在所有这些情况下,整数溢出会用比这些结构所能容纳的更多的数据来覆盖内存结构。这些溢出,在简单的程序中,除了引起无效的读或写错误外,不要做太多的事情。然而,黑客对这个问题的处理会导致内存错误,从而导致更严重的问题。在大多数简单的程序中,整数溢出不是主要问题整数类型的限制足够大,除非同时处理大量数据,否则溢出问题不会起作用。在某些情况下,可以通过使用更大范围的更大数据类型来缓解溢出,如递增计数器的情况。理论上,较大的数据类型可以,最终会遇到同样的溢出问题,但随着数据类型范围的增大,出现这种情况的可能性也会越来越小。每个整数数据类型范围的大小至少是下一个最小值的两倍,因此有足够的空间存储额外的数据
  • 发表于 2020-08-07 13:24
  • 阅读 ( 1958 )
  • 分类:电脑网络

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

推荐文章

联系我们:uytrv@hotmail.com 问答工具