8

一个int数组占用多少空间?或者一个 int 数组消耗多少空间(以字节为单位),看起来像这样:

 int[] SampleArray=new int[]{1,2,3,4};

内存分配语言是特定的吗?

谢谢你们

4

5 回答 5

7

由于您添加了很多语言标签,我想为 C# 编写。在 C# 中,这取决于操作系统。

对于 32 位,每个int是 4 字节,4 字节也用于引用对象,这使得 4 * 4 + 4 = 20 字节

对于 64 位,每个int是 4 字节,8 字节也用于引用对象,这使得 4 * 4 + 8 = 24 字节

摘自C# 5.0 in a Nutshell第 22 页;

对对象的每个引用都需要额外的 4 或 8 个字节,具体取决于 .NET 运行时是在 32 位还是 64 位平台上运行。

于 2013-09-27T11:23:24.430 回答
2

在 C++ 中,实际分配多少内存new int[4]{1, 2, 3, 4}是实现定义的,但数组的大小是sizeof(int)*4.

于 2013-09-27T11:16:24.090 回答
1

问题是:内存分配语言是特定的吗?是的,内存分配是特定于语言的..它因语言而异..对于 exp:sizeof(int)*4

在 java 中,int 大小为 4byte,因此内存消耗为:4*4=16bytes

于 2013-09-27T11:18:42.470 回答
1

它既取决于语言,也取决于操作系统。

你需要4个整数。通常一个整数是 2 或 4 个字节(在大多数系统上主要是 4 个字节),但要确保检查 sizeof(int)。

(还请记住,根据操作系统的不同,这些值的表示方式可能不同),例如 MSB 优先或 LSB 优先(或者在使用 4 个字节的情况下混合使用)。

于 2013-09-27T11:18:51.130 回答
1

在 Java 中,int[] 数组是一个对象,它在内存中由标头(x86 为 8 个字节)和 int 长度字段(4 个字节)表示,然后是整数数组(arrayLength * 4)。

   approxSize = 8 + 4 + 4 * arraylength 

在这里查看更多http://www.javamex.com/tutorials/memory/object_memory_usage.shtml

于 2013-09-27T11:19:02.800 回答