什么叫数据溢出 plc数据溢出输出不变什么意思?
plc数据溢出输出不变什么意思?
首先,你需要知道什么是溢出。当出现溢出时,其输出不会改变。存在溢出现象,称为程序错误
数据溢出
在计算机中,当要表示的数据超出计算机使用的数据范围时,就会发生数据溢出。
溢出原因
如果数据类型超过计算机字长的限制,将发生数据溢出。内存溢出的原因有很多,例如:
(1)使用非类型安全语言(如C/C)。
(2)以不可靠的方式访问或复制内存缓冲区。
(3)编译器设置的内存缓冲区太接近密钥数据结构。
因子分析
1。内存溢出是C语言或C语言固有的缺陷,它不能检查数组边界和类型安全。众所周知,C/C语言开发的目标代码非常接近机器内核,因此可以直接访问内存和寄存器。这一特性极大地提高了C/C语言代码的性能。只要编码合理,C/C应用程序的执行效率将优于其他高级语言。然而,C/C语言导致内存溢出的可能性要高得多。其他语言也有内存溢出的问题,但这不是程序员的错,而是应用程序的运行时环境。
2. 当应用程序读取用户(或恶意攻击者)的数据并试图将其复制到应用程序打开的内存缓冲区中,但无法保证缓冲区空间时(换句话说,假设代码应用了一个n字节的内存缓冲区,然后将多个n字节的数据复制到该缓冲区中)。内存缓冲区可能溢出。好好想想。如果你把16盎司的水倒进一个12盎司的杯子里,那么多出来的4盎司水呢?当然,它会充满了玻璃
!3. 最重要的是,C/C编译器打开的内存缓冲区通常与重要的数据结构相邻。假设函数堆栈紧跟在内存缓冲区之后,则存储函数的返回地址将与内存缓冲区相邻。此时,恶意攻击者可以将大量数据复制到内存缓冲区,使内存缓冲区溢出并覆盖原来存储在堆栈中的函数的返回地址。这样,函数的返回地址就会被攻击者指定的值替换;一旦调用函数,“函数返回地址”处的代码就会继续执行。不仅如此,C的其他一些数据结构,如v-table、异常处理程序、函数指针等,也可能受到类似的攻击。
数据溢出是什么意思?
1. 字节类型。它可以保存介于“0”和“255”之间的值。
2. 短号码类型。它可以保存“-32768”和“32767”之间的值,大小为2字节。
3. 整数类型。它可以保存“-2147483648”和“2147483648”之间的值,大小为4字节。
4. 长整数类型。它可以保存“-9.223.372.036.854.775.808”和“9.223.372.036.854.775.808”之间的值,大小为8字节。
5. 十进制类型。它可以保存3.4e/-38(7位小数)之间的值,大小为4字节。
6. 双精度十进制类型。它可以保存1.7e/-308(15位小数位)之间的值,大小为8字节。
7. 逻辑类型。值可以是true或false,大小为两个字节。“True和false是预定义的常量,它们对应的英语常量是True和false。8日期时间类型。用于记录日期和时间。大小为8字节。
9. 文本类型。它用来记录一段文字。文本由一系列以字节0结尾的字符组成。
10. 字节集。用于记录一段字节数据。字节集和字节数组可以相互转换。在程序中允许字节数组的地方也可以使用字节集。或者相反,字节数组的用法,如用括号引用字节成员,用数组类型的数值数据赋值等,都可以由字节集来使用。两者之间的唯一区别是字节集可以加长,因此可以将字节集视为自己的可变长度数组。
11. 子程序指针。用于指向大小为4字节的子例程。在上述基本数据类型中,字节型、短整数型、整数型、十进制型、双精度十进制型称为“数字型”,可以任意转换。然而,编程时需要注意转换可能造成的精度损失。例如,将整数257转换为字节的结果是1,因为值257超出了255字节数据的最大限制,从而导致溢出。查看变量可以使用的数据类型,然后双击定义的变量中的类型以查看所有支持的数据类型。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。