简单问题:有没有办法找出特定结构占用多少内存?
理想情况下,我希望将其打印到控制台。
编辑:Krumelur使用sizeof
函数提供了简单的解决方案。
不幸的是,它似乎不适合数组。以下代码
println("Size of int \(123) is: \(sizeofValue(123))")
println("Size of array \([0]) is: \(sizeofValue([0]))")
println("Size of array \([0, 1, 8, 20]) is: \(sizeofValue([0, 1, 8, 20]))")
生成此输出:
Size of int 123 is: 8
Size of array [0] is: 8
Size of array [0, 1, 8, 20] is: 8
因此,不同大小的数组会给出相同的大小,这肯定是不正确的(至少对我而言)。
答案 0 :(得分:2)
sizeof(T)
运算符在Swift中可用。它返回指定类型或变量占用的大小,就像在C中一样。
然而,与C不同,没有堆栈分配数组(静态数组)的概念。数组是指向对象的指针,这意味着它的大小始终是指针的大小(这与C中的堆分配数组相同)。要获得数组的大小,您必须执行类似
的操作array.count * sizeof(Telement)
但即使只有在Telement
不是分配堆内存的对象时才会这样。
答案 1 :(得分:0)