多少内存使用带有一个高索引元素的数组?

时间:2017-07-08 07:57:41

标签: arrays memory perl6

运行此代码会占用大约4_000_000字节的内存吗?

my uint32 @array;
@array[1_000_000] = 1;

1 个答案:

答案 0 :(得分:9)

如果指定元素1_000_000,并且每个元素是4个字节,那将是4_000_004个字节的内存。所以严格来说,答案是“不”: - )

但不那么迂腐:本地数组保证在内存中连续布局,因此这样的赋值至少会分配一个4 x 1_000_001 = 4_000_004字节内存的块。正如克里斯托夫在他的评论中所说,如果你想确保它是所有它将分配的全部,你需要使它成为一个形状的原生阵列。您还可以获得上限支票作为奖励。