变量究竟存储在C程序中的哪个位置?

时间:2016-06-29 09:44:36

标签: c variables

我是计算机编程的新手。我正在研究变量,并在互联网上找到了一个定义:

  

变量是您为计算机内存位置提供的名称,用于在计算机程序中存储值。

这些内存位置是什么?这些位置是否指的是实际的计算机内存,或者这只是程序本身的一个转储,它在以后需要时调用这些变量? 还有我在堆栈溢出时遇到的其他术语,如堆和堆栈。我无法理解这些。请帮忙。

1 个答案:

答案 0 :(得分:0)

您提出问题的方式表明您希望得到一个答案。事实并非如此。

粗略地说,在执行程序时,所有变量都将存在于内存中。变量所在的存储器取决于几个方面。

现代计算机硬件通常具有相当复杂的物理内存架构 - 具有多级缓存(在CPU和各种外围设备中),许多CPU寄存器,共享内存,不同类型的RAM,存储设备,EEPROM不同的系统有不同比例的这些类型的内存 - 以及更多类型。

操作系统可能以不同方式为您的程序提供内存。例如,它可以提供虚拟内存,使用RAM和预留硬盘空间的组合(以及管理映射,因此您的程序无法区分)。这可以允许程序使用比物理上可用的RAM更多的内存,但也会影响性能,因为操作系统必须在RAM和硬盘驱动器之间交换程序的内存使用量(通常要慢几个数量级)。 p>

实现了许多编译器和库,以最大限度地提高程序性能(通过各种措施) - 编译器优化代码(可能导致代码中的某些变量在程序运行时甚至不存在),库函数精心设计这样做的一个结果是编译器或库可能以不同的方式使用内存(例如,某些实现可能会在您的可执行文件中嵌入代码以检测程序运行时可用的内存资源,其他实现可能只是假设已修复RAM的数量,甚至可能随着时间的推移而变化。