的
isize
類型是有符號整數類型具有相同數目的比特作爲平臺的指針類型。對象和數組大小的理論上限是最大isize
值。這確保isize
可用於計算指向對象或數組的指針之間的差異,並且可以處理對象中的每個字節以及超過結尾的一個字節。
這明顯地限制了一個數組在32位系統上的最多2G元素,但是不清楚的是數組是否也被約束到最多2GB的內存。
在C或C++中,您可以將指向第一個和最後一個元素的指針轉換爲char*
,並獲取這兩個指針的差異;有效地將陣列限制爲2GB(以免溢出intptr_t
)。
32位數組是否也限制在2GB的Rust中?或不?
所以答案是:是的,這僅限於2GB? –
@MatthieuM。是。我已經編輯了我的答案,對此有點更清楚。 – Veedrac
'capacity'在兩種方法中都是'usize',所以'Vec'的最大容量爲4GB。但是,如果請求的分配大小超過2GB,則分配器可能會失敗... –