Well, just following that manual section and compiler messages, replace
`memRegion` (a variable) in the last line with a type, the type you want to
point to, `PinnedArray[int]` in your case, and to the left to that `ptr` put
another object type, serving to distinguish your memory region, like:
type Cuda = object # nothing needed inside, serves just as a mark
var foo: Cuda ptr PinnedArray[int] # read this as "Cuda-pointer to
PinnedArray[int]"
> Nimsuggest also says "region needs to be an object type"
That's explicit in that manual section.
* * *
UPD
Something that compiles, though too much casts, and maybe not best fits your
needs:
type
UncheckedArray {.unchecked.}[T] = array[0..100_000_000, T]
PinnedArray[T] = object
len: int
data: ptr UncheckedArray[T]
Cuda = object
var foo: Cuda ptr PinnedArray[int]
foo = cast[ptr[Cuda, PinnedArray[int]]](alloc sizeOf(PinnedArray[int]))
foo.data = cast[ptr UncheckedArray[int]](alloc 50_000)
foo.len = 50_000
foo.data[][2]=7
echo foo.data[][2]