内存,缓冲区和堆栈有什么区别?

时间:2013-12-20 20:49:41

标签: c memory stack buffer

在学习 C 编程时,只提到memory,但实际上似乎还有更多;还会使用bufferstack字词。

这些条款有什么区别?它们为什么相关?

拜托,我需要一个详细的答案。简短的答案无法提供服务。也有一些资源可能会有所帮助。

2 个答案:

答案 0 :(得分:9)

缓冲区临时存储数据,而数据是从一个地方移动到另一个地方的过程,即输入设备到输出设备。你可以说缓冲区是内存的一部分。您可以说缓冲区是内存的预分配区域,您可以在处理数据时存储数据。

来自here

  

另一方面,缓冲区主要存在于RAM中并充当   CPU可以临时存储数据的区域。使用此区域   主要是当计算机和其他设备有不同的时候   处理速度。通常,数据按原样存储在缓冲区中   从输入设备(例如鼠标)或之前检索   发送到输出设备(如扬声器)。但是,缓冲区可能   在计算机内的进程之间移动数据时也可以使用它。

     

因此,计算机将数据写入缓冲区,从那里开始   设备可以以自己的速度访问数据。这允许计算机   在写入数据后能够专注于其他事项   缓冲区;反对不断专注于数据,直到   设备已完成。

     

缓冲区可以在硬件或固定内存位置实现   通过在软件中使用虚拟数据缓冲区,指向数据   缓冲区存储在物理存储介质上。大多数人   在软件中使用缓冲区。这些缓冲区通常使用   更快的RAM来存储临时数据,因为RAM具有更快的访问速度   时间比硬盘驱动器。缓冲区通常会调整时间   在内存中实现队列或FIFO算法。因此,它经常是   以一种速率将数据写入队列并在另一种速率下读取数据   率。

Stack是一组项目,其中插入数据并从一端(称为堆栈顶部)中删除。

  

在计算机科学中,堆栈是一种特殊的抽象数据   类型或集合,其中的主要(或唯一)操作   集合是集合中添加的实体,称为   推送和删除实体,称为pop

答案 1 :(得分:3)

内存是存储有关程序的指令和数据的存储空间。 缓冲区和堆栈都是内存的一小部分。

缓冲区在执行程序时临时存储数据。

Operating System Concepts (8th ED)

  

缓冲区是存储区域,用于存储在两个设备之间或设备与应用程序之间传输的数据。

另一方面,堆栈是根据后进先出(LIFO)原则插入和移除的对象的容器。在下推堆栈中,只允许两个操作:将项目推入堆栈,然后将项目弹出堆栈。堆栈是一种受限访问的数据结构 - 只能在顶部添加和删除堆栈中的元素。 push将一个项添加到堆栈顶部,pop从顶部删除该项。