memory-management - 数据类型和大小如何存储在内存中?

标签 memory-management assembly types

double a;
unsigned int b;

在运行时,操作系统如何知道这些变量有多少字节,以及它们的位应该如何解释?如果这是依赖于语言/操作系统的,则在 Windows 上假设为 C。

是否有将变量标识符的位表示映射到字节大小和数据类型的 LUT?从 uC 上的汇编编程中,我记得编译器神奇地知道分配给变量的字节数,并适本地执行零填充/等。

最佳答案

就操作系统而言,这些只是内存块。除了“随机位串”之外,它对它们包含的内容一无所知。

智能都在编译器中——编译器跟踪变量的类型,然后为适当的字节数生成加载和存储指令,并生成对适当大小和编码方案的操作数进行操作的代码(例如,它知道使用无符号加法运算,而不是无符号整数上的有符号运算)。

关于memory-management - 数据类型和大小如何存储在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17438381/

相关文章:

javascript - 如何关闭内存GCed?

ios - 释放 Objective-C 中的对象

assembly - 为什么对非核心响应/非核心请求的需求过多?

iphone - 在 iPhone 上编写 ARM 汇编代码的工作流程

class - 在 VBA 中使用自定义数据类型

java - 告诉 Java Class<T> T 中有某个方法

c++ - 编译器不喜欢 void :'( - function declaration

php - 在 php 中,我可以使对象行为与数组有多相似?我该怎么做?

c++ - Objective-C++ 自己的内存管理

assembly - 汇编代码是跨平台的吗?