c ++ / MATLAB Mex связывание - PullRequest
7 голосов
/ 27 марта 2012

Я собираюсь написать Mex File, чтобы я мог использовать свой код C ++ в MATLAB.

Этот код построен на основе одноэлементного класса (в c ++).

Я читал, что для постоянной памяти мне нужно использовать MxAlloc вместо malloc / new, верно ли это для всей используемой памяти? Т.е. класс, который я использую, использует векторы, а векторы автоматически выделяют новую память, используя стандартные механизмы.

Так будет ли у вектора в классе, выделенном с помощью MxAlloc, проблемы с сохранением памяти?

1 Ответ

7 голосов
/ 27 марта 2012

MxAlloc используется только для данных, которые вы собираетесь вернуть в Matlab.Все, что остается в вашей библиотеке, может быть распределено нормально.

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

...