我知道什么是缓冲区溢出.我不知道缓冲区下溢是什么.
我猜测这是一个特定的缓冲区,而不是字节溢出,这是一个字节的下溢.
char buffer[8]; fgets(buffer,sizeof(buffer),stdin);
上面没有错误.
char buffer_overflow[8]; fgets(buffer_overflow,16,stdin);
如果用户输入例如“deutschland”,则上述将导致缓冲区溢出.
我可以在代码中获得一个例子,什么是缓冲区下溢?
解决方法
缓冲区下溢与缓冲区溢出无直接关系.然而,缓冲器下溢可能是例如一个问题.环形缓冲区.
考虑例如音频播放:您的音频缓冲区可能是内核内存中的一个环形缓冲区.如果写入的数据慢于音频驱动器/硬件从缓冲区读取,缓冲区将变为空(“下溢”),导致口吃音频.对于其他类型的实时数据处理和媒体播放也存在类似的问题.
因此,缓冲区下溢通常不是故障条件(与缓冲区溢出不同,缓冲区溢出通常导致程序执行未定义的不必要的行为,如终止,执行一些不需要的代码等).