Возврат структуры C через mex-функцию - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь вернуть структуру, созданную в mex-функции, в matlab.Теперь есть функция mxCreateStructArray, но я создаю структуру типа узла для древовидной структуры данных, и, таким образом, это сформированный рекурсивный связанный список.Также узлы формируются путем динамического выделения памяти.Таким образом, я не могу предварительно выделить память.Я в недоумении относительно того, как я могу перенести эту структуру, сформированную в структуру типа matlab, как вывод функции.

1 Ответ

0 голосов
/ 22 мая 2018

Если бы вы работали строго в C, решение было бы использовать указатели.Указатели позволяют вам сообщить вашей программе «Эй, я собираюсь передать вам этот адрес памяти, я скажу вам, что это за адрес, и вы делаете вещи для меня без необходимости работать над ним самостоятельно» .Когда в этом отношении используются указатели, они могут быть достаточно мощными, способными изменять значения констант.Однако этим правом часто злоупотребляют или злоупотребляют, поэтому многие языки накладывают ограничения на использование указателей или создают собственные обходные пути для реализации своих возможностей.

MATLAB имеет некоторые функции указателя , однако ваш подход к возвращению целого дерева - плохая практика.Столько информации, не говоря уже об эффективности, опасно во многих отношениях, чем один.Функция, которая возвращает все дерево узлов, может быть бесполезной или даже ненужной информацией.Вы должны попытаться изменить свою программу так, чтобы она начиналась с головного узла, рекурсивно спускаясь по дереву и возвращая каждый узел с хвоста вверх.

...