【发布时间】:2017-07-08 07:57:41
【问题描述】:
运行此代码会占用大约 4_000_000 字节的内存吗?
my uint32 @array;
@array[1_000_000] = 1;
【问题讨论】:
-
如果你想要任何保证,你需要塑造你的数组,例如
my uint32 @array[1_000_001]
运行此代码会占用大约 4_000_000 字节的内存吗?
my uint32 @array;
@array[1_000_000] = 1;
【问题讨论】:
my uint32 @array[1_000_001]
如果您分配元素 1_000_000 并且每个元素是 4 个字节,那将是 4_000_004 个字节的内存。所以严格来说,答案是“不”:-)
但不那么迂腐:原生数组保证在内存中连续布局,因此这样的分配至少会分配一个 4 x 1_000_001 = 4_000_004 字节的内存块。正如 Christoph 在他的评论中所说,如果你想确保它是它所分配的全部,你需要使它成为一个成形的原生数组。您还将获得上限检查作为奖励。
【讨论】: