當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Swift UnsafeMutableRawPointer initializeMemory(as:repeating:count:)用法及代碼示例

實例方法

initializeMemory(as:repeating:count:)

用給定的值初始化這個指針引用的內存,將內存綁定到值的類型,並返回一個指向初始化內存的類型化指針。

聲明

@discardableResult func initializeMemory<T>(
    as type: T.Type,
    repeating repeatedValue: T,
    count: Int
) -> UnsafeMutablePointer<T>

返回值

指向此原始指針引用的內存的類型化指針。

參數

type

將此內存綁定到的類型。

repeatedValue

要複製到內存中的實例。

count

要複製到內存中的value 的副本數。 count 不能為負數。

詳述

此指針引用的內存必須未初始化或初始化為普通類型,並且必須正確對齊才能訪問 T

下麵的示例分配足夠的原始內存來容納 Int8 的四個實例,然後使用 initializeMemory(as:repeating:count:) 方法初始化分配的內存。


let count = 4
let bytesPointer = UnsafeMutableRawPointer.allocate(
        byteCount: count * MemoryLayout<Int8>.stride,
        alignment: MemoryLayout<Int8>.alignment)
let int8Pointer = bytesPointer.initializeMemory(
        as: Int8.self, repeating: 0, count: count)


// After using 'int8Pointer':
int8Pointer.deallocate()

在原始指針 p 上調用此方法後,從 self 開始並繼續到 p + count * MemoryLayout<T>.stride 的區域將綁定到類型 T 並初始化。如果T 是非平凡類型,您最終必須取消初始化或從該區域中的值移動以避免泄漏。

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 UnsafeMutableRawPointer initializeMemory(as:repeating:count:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。