小编use*_*218的帖子

Swift计算结构的错误大小

今天我遇到了Swift结构的问题.例如,请参阅以下结构:

struct TestStruct {
    var test: UInt16
    var test2: UInt32
}
Run Code Online (Sandbox Code Playgroud)

我假设这个结构的大小总共是6个字节,因为UInt16是2个字节而UInt32是4个字节大.

以下代码打印6(这是正确的):

println(sizeof(UInt32) + sizeof(UInt16))
Run Code Online (Sandbox Code Playgroud)

但是,如果我检查结构的大小

println(sizeof(TestStruct))
Run Code Online (Sandbox Code Playgroud)

它打印8而不是6.

如果我尝试使用以下结构:

struct TestStruct2 {
    var test: UInt16
    var test2: UInt16
    var test3: UInt16
}
Run Code Online (Sandbox Code Playgroud)

然后

println(sizeof(TestStruct2))
Run Code Online (Sandbox Code Playgroud)

打印正确的值:6.但TestStruct的大小应与TestStruct2的大小相同.

为什么第一个struct 8字节大?我做错了什么或这是一个错误?

(在OS X Mavericks上使用Xcode 6.1.1(6A2008a)进行测试,适用于Mac的普通命令行应用程序)

xcode struct sizeof swift

7
推荐指数
1
解决办法
3655
查看次数

标签 统计

sizeof ×1

struct ×1

swift ×1

xcode ×1