关于溢出的问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 19:57:13
这学期学计组刚接触到“溢出”的概念,不是很理解。据说溢出会导致相邻存储单元里的数据被覆盖,因而很危险。我试图用以下实验来验证它:定义一个整型数组,赋初值后。将其中一个元素加上一个很大的数(超过整型数的范围),然后输出与其相邻的数组元素,看他们会不会和初值不同。但编译时无法通过。
请问这是怎么回事??如果我想知道"溢出”的确会覆盖其他数据,该怎样用实验来证明??
http://zhidao.baidu.com/question/67388592.html

你这个是数据溢出,而非内存溢出,内存溢出的概念是这样的:

int a[10];
int* b = a;

for(int i = 0; i < 20; )
{
b++ = 5;
}

这时在内存中数组a之后的(20 - 10) * sizeof(int)个字节的数据被篡改了,也称溢出了,如果那些个内存地址里的数据原来是有意义的,那么很可能会导致bug的。

溢出分不同种呵
你刚开始说的属于缓冲区溢出,而后面操作的为数据溢出,前者你说的没错
而后者,只是影响标志位,而不会出现前面缓冲区的影响呵
不能运行可能有其他的问题哈,再查查

“加上一个很大的数”,如果你写成5555555是不行的,5555555L是可以的,因为常数也有取值范围

你可以加很多次的1啊

应该不会吧!!!