内存地址会占用内存吗?

时间:2015-03-30 19:37:41

标签: memory memory-management memory-address

我对编程很新,并开始学习内存分配的细节。我最近发现的一个问题是,我还没有找到一个明确的答案,那就是内存地址会占用内存。例如,在32位系统中,我理解它的方式是每个4字节的地址,它们通常会引用一个空的桶#39;在内存中能够存储1个字节的数据。这是否意味着对于32位系统中的每个内存位置,我们实际上使用5个字节的内存(意味着4个用于地址,1个用于空桶)?我确定我在这里遗漏了一些东西,但任何澄清都会非常感激。谢谢!

2 个答案:

答案 0 :(得分:0)

要引用内存地址,需要以某种方式表示该内存地址,而在32位系统上,内存引用确实需要4个字节。因此,对于任何可寻址的存储器地址,存储器中的其他地方有4个字节具有该地址。

但是这不会级联到x5乘法,因为程序不需要引用每个字节的内存。它只需要内存中某些东西启动的地址,然后它就可以运行到那个'某些东西的每一个字节。使用算术。

举个例子:你在内存Justin Foss中有一个字符串。它是否在地址0x10000000处,并且该地址存储在变量中。因此实际变量值为0x10000000,指向字符串Justin Foss。但是在0x10000000处,您只有一个字节J。在0x10000001处有u,在0x10000002处是s,依此类推。您的应用程序不需要每个字符的变量,它只需要一个变量(4个字节)到字符串的开头。对象(字段)也是如此:您只存储对象启动的地址,并且编译器知道如何通过添加必要的偏移来运算所需的字段。通常,内存对象非常大,程序中的一些4字节变量引用了相当多的内存。

答案 1 :(得分:0)

(存在过度简化的风险)内存是连续的。地址123是系统中第一个(第零个)的第一百二十三个字节。没有用于指示字节123的内存是123.之后的字节是124。