gpt4 book ai didi

c - C 程序中的变量到底存储在哪里?

转载 作者:行者123 更新时间:2023-11-30 16:59:30 27 4
gpt4 key购买 nike

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

Variables are the names you give to computer memory locations which are used to store values in a computer program.

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

最佳答案

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

粗略地说,当程序执行时,所有变量都将存在于内存中。变量存在的内存取决于几个因素。

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

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

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

关于c - C 程序中的变量到底存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38095928/

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