C function returning an mxArray pointer

3 views (last 30 days)
Hello!
I am trying to interface our software to Matlab using the functionality to call external, shared libraries from Matlab using loadlibrary and calllib.
My question is:
If I have a C function returning a mxArray pointer: mxArray* myCFunction(mxArray* args);
Will then Matlab be responsible for deleting the object? What If the function returns a null pointer or the input arguments, is this forbidden, e.g.: mxArray* myCFunction(mxArray* args){ return args; }
or
mxArray* myCFunction(mxArray* args){ return 0; }
Best, Joel

Accepted Answer

Philip Borghesani
Philip Borghesani on 1 Sep 2011
The rules are the same as for outputs returned via plhs in a mex file.
In short:
  • To return an input a copy must be made with mxDuplicateArray.
  • MATLAB will delete the object when there are no longer any references to it in MATLAB.
  • A null pointer should convert to an empty double array but test this if you depend on it.

More Answers (0)

Categories

Find more on C Shared Library Integration in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!