Copying data from ptr returned from ccall to julia data structure

I am trying to use an API that allocates memory and fills it out and passes data to the caller (and the caller must call another function in the API when done with the data to free the memory). I am not sure how to copy the data out to julia.

A simplified example is here

julia> ptr = ccall((:data, "libfoo"), Ptr{Cuchar}, (Cint,), 100)

00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 
10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 
20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 
30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 
40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 
50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 
60 61 62 63 
Ptr{UInt8} @0x000055bd0bc533b0

What is the method of copying this data to an Array{UInt8,1} ?

Thank you

You can use unsafe_wrap(Array, ptr, dims) to wrap your pointer in an Array (without copying the data). If you want to keep a copy of the data in Julia after you free it in your library, you can copy(unsafe_wrap(Array, ptr, dims)).

Perfect! Thank you!