Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

calloc in Swift

How do I transform the following ObjectiveC statements into SWIFT:

UInt32 *pixels;
pixels = (UInt32 *) calloc(height * width, sizeof(UInt32));

I tried to do the following:

var pixels: UInt32
pixels = (UInt32)calloc(height * width, sizeof(UInt32))

and I receive the error message:

Int is not convertible to UInt

and the (UInt32) Casting didn't work as well. Can someone give me some advice please? I am struggling a little bit with SWIFT still. Thank you.

like image 262
sesc360 Avatar asked Feb 10 '23 19:02

sesc360


1 Answers

Here's an easier way of allocating that array in swift:

var pixels = [UInt32](count: height * width, repeatedValue: 0)

If that's what you actually want to do.

But, if you need a pointer from calloc for some reason, go with:

let pixels = calloc(UInt(height * width), UInt(sizeof(UInt32)))

The type of pixels though must be a type of UnsafeMutablePointer<T>, and you would handle it like a swift pointer in the rest of your code.

like image 113
carlossless Avatar answered Feb 13 '23 20:02

carlossless