> On 23 Sep 2016, at 19:41, Quinn The Eskimo! via swift-users > <swift-users@swift.org> wrote: > > > On 23 Sep 2016, at 11:29, Gerriet M. Denkmann via swift-users > <swift-users@swift.org> wrote: > >> What about calloc then? Or use allocate and do a memset afterwards? > > For trivial data types (like UInt8) this will work, but if you want to follow > the rules I recommend reading the following: > > * UnsafeRawPointer Migration > > <https://swift.org/migration-guide/se-0107-migrate.html> > > * SE-0107 “UnsafeRawPointer API” > > <https://github.com/apple/swift-evolution/blob/master/proposals/0107-unsaferawpointer.md> > > Spoiler: that’ll point you to `initialize(to:count:)` (-:
Thanks for the links. By the way: I had already tried to use `initialize(to:count:)` before, but I used it as a replacement of allocate, which the compiler did not really like. Since reading these documents I know that I have to use it after allocate, not instead of. In dealloc I had before: free( bitfield ) which, to my surprise, the compiler did NOT warn about (should there be a warning?) I have since replace this with: bitfield.deallocate(capacity: numberUsedInAllocate ) > * * * > > Also, why are you manually allocating this rather than using [UInt8]? The > latter is easier, safer, and likely to have similar levels of efficiency. I just tried this: [UInt8] turns out to be nearly 10% slower compared to: UnsafeMutablePointer<UInt8>.allocate(capacity:). Probably depends on the use case, whether 10% less performance is worth the easier and safer. I am trying to compare Swift to ObjC classes (which use malloc), so it would not be a fair comparison if the Swift class has to use an UInt8 array. Kind regards, Gerriet. _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users