发布网友 发布时间:2022-04-22 21:30
共5个回答
热心网友 时间:2023-07-14 08:19
在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出,这种现象叫做数据溢出。
例如,一数据源不断发送数据,进入缓存区,再从缓存端口输出。但是若数据写入的速率大于数据读出的速率,那么缓存器迟早要被数据占满,若不采取一定措施(如暂停写入数据),那么数据就会溢出,这样会导致数据的丢失。
数据溢出的的原因
当应用程序读取用户(也可能是恶意攻击者)数据,试图复制到应用程序开辟的内存缓冲区中,却无法保证缓冲区的空间足够时(换言之,假设代码申请了N字节大小的内存缓冲区,随后又向其中复制超过N字节的数据),内存缓冲区就可能会溢出。
最重要的是,C/C++编译器开辟的内存缓冲区常常邻近重要的数据结构。假设某个函数的堆栈紧接在在内存缓冲区后面时,其中保存的函数返回地址就会与内存缓冲区相邻。
此时,恶意攻击者就可以向内存缓冲区复制大量数据,从而使得内存缓冲区溢出并覆盖原先保存于堆栈中的函数返回地址。这样,函数的返回地址就被攻击者换成了他指定的数值;一旦函数调用完毕,就会继续执行“函数返回地址”处的代码。
热心网友 时间:2023-07-14 08:20
数据溢出热心网友 时间:2023-07-14 08:20
在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出。参考资料:http://ke.baidu.com/view/98452.htm
热心网友 时间:2023-07-14 08:21
在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出。热心网友 时间:2023-07-14 08:21
计算机中,溢出是什么意思?
1。数据过大。 数据超过了预定类型的界限,就会出现的数据溢出。
2。数据量过大。 如定义数组 Array[10], 而在调用时使用 Array[11]! 内存缓冲区就可能会溢出。
溢出原因分析
1。程序员经验不足。 导致内存溢出,程序错乱,甚至死机。
2。程序员水平太高。 超范围操作内存,以达到不可告人的目的。