致命错误:从未对齐的原始指针加载

Posted

技术标签:

【中文标题】致命错误:从未对齐的原始指针加载【英文标题】:fatal error: load from misaligned raw pointer 【发布时间】:2017-02-15 14:28:55 【问题描述】:

对于iPhone5 (10.2) 模拟器这个功能:

static func fromByteArray<T>(_ value: [UInt8], _: T.Type) -> T 
        return value.withUnsafeBytes 
            $0.baseAddress!.load(as: T.self)
        
    

$0.baseAddress!.load(as: T.self) 崩溃并出现此错误:

有人知道解决办法吗?

我正在使用此代码:

https://***.com/a/26954091/1979882

编辑 它适用于 iPhone5s 但不适用于 iPhone5

【问题讨论】:

【参考方案1】:

确实,如您所述,它崩溃了。解决方案是使用该函数将字节数组转换为所需的类型:

func fromByteArray<T>(_ value: [UInt8], _: T.Type) -> T 
        return value.withUnsafeBufferPointer 
            $0.baseAddress!.withMemoryRebound(to: T.self, capacity: 1) 
                $0.pointee
            
        
    

这是我的测试结果(红色导致 iPhone 5 模拟器因未知原因崩溃):

【讨论】:

以上是关于致命错误:从未对齐的原始指针加载的主要内容,如果未能解决你的问题,请参考以下文章

使用grunt-sass编译node-sass,我得到错误“致命错误:”原始“参数必须是类型函数。”

表视图错误致命错误:加载文件时索引超出范围

加载 WAV 文件时出现 OpenAL 错误 40963

加载库存表视图时出现致命错误(发现为零)

重新加载表数据时出现致命错误:展开为零:需要帮助

PSR-4 自动加载器致命错误:找不到类