Arrays of CTypes Memory Layout

If you are already storing a in IdDict you should be fine.

You don’t need to/should’t go too complicated, just do a simple

float f(float *p)
{
    return p[0];
}

and do your ccall(:f, Cfloat, (Ptr{Cfloat},), a) or ccall(:f, Cfloat, (Ptr{Cfloat},), pointer(a)) (making sure a is in the IdDict for the second case) and see if you get the answer you expect by comparing it to a[1].