gpt4 book ai didi

buffer - 什么是缓冲区?

转载 作者:行者123 更新时间:2023-12-04 04:19:30 24 4
gpt4 key购买 nike

就我对语言的理解而言,缓冲区是内存中存储数据的任何部分,例如int,浮点变量,字符数组等。
但是,在阅读有关堆栈http://www.tenouk.com/Bufferoverflowc/Bufferoverflow2a.html的信息时,我正在阅读缓冲区溢出并遇到了此链接。此链接中的图将缓冲区与函数的局部变量分开。这样对吗?那是什么缓冲区?

最佳答案

非常抽象的类比:您现在正在使用局部变量;它们就是您手中握着的东西。缓冲是数据源,汤匙是汤碗,量杯是水龙头。手里拿着汤匙比手里拿着汤碗更实际,而且手里拿着不停的水流几乎是不可能的。无论哪种情况,您都在使用这些器皿,以便您可以按照自己的节奏食用汤/水。

更具体地说,局部变量就是您在函数内部而不是外部声明的变量。缓冲区是一块内存(通常是一个数组),用于从庞大的数据源中复制一小部分数据,因此您可以以计算机或程序可以处理的任何速度对其进行处理。如果希望另一个函数填充该缓冲区,则可以在函数外部声明该缓冲区,或者如果要填充并自己使用它,则可以将其声明为局部变量。这是一个非常笼统的术语。

一些例子:

  • 音频缓冲区可能会保存大约0.5秒的音频,以从声卡复制到程序的内存中以供程序处理,或者从程序的内存复制到声卡中以输出到扬声器。您的程序可以立即解码mp3文件并将所有数据转储到您的卡上,但如果这样做,最终将达到几百MB的数量,而且您将无法享受以50倍的速度欣赏音乐的乐趣-因此它一点一点地解码,并将其存储在缓冲区中。
  • 开始播放视频时,视频缓冲区可能会从YouTube填充到您的内存和/或硬盘中,因此不会因为互联网连接太慢而每隔几秒钟暂停一次。
  • 程序可能会使用字符缓冲区将某些文本从一个功能共享到另一个功能。如果您使用cin或ReadLine或gets或其他东西来从键盘输入一些文本,则可以公平地调用它存储在“字符缓冲区”中的字符串。在这种情况下,您可以将缓冲区声明为局部变量。
  • 关于buffer - 什么是缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3272735/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com