在学习 C 编程时,只提到memory
,但实际上似乎还有更多;还会使用buffer
和stack
字词。
这些条款有什么区别?它们为什么相关?
拜托,我需要一个详细的答案。简短的答案无法提供服务。也有一些资源可能会有所帮助。
答案 0 :(得分:9)
缓冲区临时存储数据,而数据是从一个地方移动到另一个地方的过程,即输入设备到输出设备。你可以说缓冲区是内存的一部分。您可以说缓冲区是内存的预分配区域,您可以在处理数据时存储数据。
来自here:
另一方面,缓冲区主要存在于RAM中并充当 CPU可以临时存储数据的区域。使用此区域 主要是当计算机和其他设备有不同的时候 处理速度。通常,数据按原样存储在缓冲区中 从输入设备(例如鼠标)或之前检索 发送到输出设备(如扬声器)。但是,缓冲区可能 在计算机内的进程之间移动数据时也可以使用它。
因此,计算机将数据写入缓冲区,从那里开始 设备可以以自己的速度访问数据。这允许计算机 在写入数据后能够专注于其他事项 缓冲区;反对不断专注于数据,直到 设备已完成。
缓冲区可以在硬件或固定内存位置实现 通过在软件中使用虚拟数据缓冲区,指向数据 缓冲区存储在物理存储介质上。大多数人 在软件中使用缓冲区。这些缓冲区通常使用 更快的RAM来存储临时数据,因为RAM具有更快的访问速度 时间比硬盘驱动器。缓冲区通常会调整时间 在内存中实现队列或FIFO算法。因此,它经常是 以一种速率将数据写入队列并在另一种速率下读取数据 率。
Stack是一组项目,其中插入数据并从一端(称为堆栈顶部)中删除。
在计算机科学中,堆栈是一种特殊的抽象数据 类型或集合,其中的主要(或唯一)操作 集合是集合中添加的实体,称为 推送和删除实体,称为pop
答案 1 :(得分:3)
内存是存储有关程序的指令和数据的存储空间。 缓冲区和堆栈都是内存的一小部分。
缓冲区在执行程序时临时存储数据。
缓冲区是存储区域,用于存储在两个设备之间或设备与应用程序之间传输的数据。
另一方面,堆栈是根据后进先出(LIFO)原则插入和移除的对象的容器。在下推堆栈中,只允许两个操作:将项目推入堆栈,然后将项目弹出堆栈。堆栈是一种受限访问的数据结构 - 只能在顶部添加和删除堆栈中的元素。 push将一个项添加到堆栈顶部,pop从顶部删除该项。