Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我如何找到一个结构占用了多少内存?_Ios_Swift_Memory_Memory Management - Fatal编程技术网

Ios 我如何找到一个结构占用了多少内存?

Ios 我如何找到一个结构占用了多少内存?,ios,swift,memory,memory-management,Ios,Swift,Memory,Memory Management,简单问题:有没有一种方法可以找出特定结构占用了多少内存 理想情况下,我希望它打印到控制台 编辑: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:

简单问题:有没有一种方法可以找出特定结构占用了多少内存

理想情况下,我希望它打印到控制台


编辑: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
因此,不同大小的数组给出了相同的大小,但肯定是不正确的(至少就我而言)。Swift中提供了
sizeof(T)
操作符。它返回指定类型或变量占用的大小,就像在C中一样

然而,与C不同的是,没有堆栈分配数组(静态数组)的概念。数组是指向对象的指针,这意味着它的大小始终是指针的大小(这与C中的堆分配数组相同)。要获得数组的大小,必须执行以下操作

array.count * sizeof(Telement)

但即使如此,只有当
Telement
不是一个分配堆内存的对象时才是如此。

这似乎现在在Swift标准库中得到了支持


也许是我的结构?@Krumelur看起来不错。。。你为什么不回答呢?字符太少了,我必须要有创意:)@Krumelur如果你愿意,你可以再添加一些字符,告诉我
sizeof(MyStruct)
的返回值是多少。或者
sizeofValue(myStruct)
。找不到,链接到文档也会对我有所帮助。8是64位地址的大小,我假设它是swift中数组变量的大小?好的,我知道了-我将只使用
sizeof
对数组的元素类型使用,乘以数组中元素的计数,然后对所有数组求和。
MemoryLayout.size(ofValue: self)