How is your pointer defined? Pointer type should tell debugger what's under address, pointer is pointing to.
typedef struct{ int aa; int bb;} type;type * uio;struct{ int xx; int yy;} * zzz;int foo( struct{int xx;int yy;} * zzz ){ zzz[4].xx = 5;} All ^^ these pointers are perfectly inspecteable in debugger. If it's pointer to array, you can specify array size using Options->Pointer As Array. It works.
Regarding malloc and your library. It would be the best to allow your user to choose where to allocate your temporary array. Tell you need 100k of RAM for initialization calculations. You tell user to call Init(void *x) with x pointing to that big chunk of RAM, which user can use for any purpose afterwards. In this case user will have at least 3 choices. 1) to use malloc, 2) to allocate it statically or on the stack, take address and pass it to init routine 3) after initialization reuse this RAM for users variables. Using malloc user has to reserve enough RAM for the heap, this doesn't differ a lot from static allocation. Malloc doesn't save any single byte of RAM, quite the opposite, it requires additional variables to maintain RAM allocation, deallocation etc. What about RAM fragmentaion, after several alloc/free calls? You need much more RAM if you are going to use primary purpose of dynamic allocation, else your code will stuck at malloc returning NULL, because heap is fragmented...