数来自据溢出是什么意思
的有关信息介绍如下:在360问答计算机中,当要表示的数据超出计算机所使用的数据的表示范围老槐纤时,则产生数据的溢出,这种现象叫做数据溢出。
例如,一数据源底衣剂洋没担至轮缩不断发送数据,侍仿进入缓存区,再从缓存端仅乡伤水织冷置口输出。但是若数据写入的速率大于数据读出的速率,那么缓存器迟早要被数据占满,若不采取一定措施(如暂停写入数据),那么数据就会降问父争点个田局抗控唱溢出,这样会明局导致数据的丢失。
数据溢出的的原因
当应用程序读取用户(也可能是恶意攻击者)数据,试图复制到应用程序开辟的内存缓冲区中,却无法保证缓冲区的空间足够时(换言之,假设代码申请了N字节大小的内存缓冲区,随后又向其中复制超过N字节的数据),内存缓单束侵千地写药攻深评引冲区就可能会溢出。
最最岁侵重要的是,C/C++编译器开辟的内存缓冲区常常邻近重要的数据结构。假设某个函数的氧司天条段制求之职降线堆栈紧接在在内存缓冲区后面时,其中保存的函数及据赵受返回地址就会与内存缓冲区相邻项逐明曲叫兴味政。
此时,恶意攻击者就可以向内存缓冲区复充官切叶制大量数据,从而使得内存缓冲区溢出并覆盖原先保存于堆栈中的函数返回地址。这样,函数的返回地址就科陈光缺物想已被攻击者换成了他指定的数司织段快冷笑抓承镇革照值;一旦函数调用完毕,就会继续执行“函数返回地址”处的代码。