Я собираюсь написать файл Mex, поэтому я могу использовать свой код C++ в MATLAB.C++/MATLAB Mex binding
Этот код построен вокруг одноэлементного класса (в C++).
Я читал, что для постоянной памяти я должен использовать MxAlloc isntead из malloc/new, это правда для всей используемой памяти? I.e, класс I использует векторы, а векторы автоматически выделяют новую память, используя стандартные механизмы.
Так будет ли вектор в классе, выделенном с использованием MxAlloc, иметь проблемы с сохранением его памяти?
Большой вопрос - эта проблема не очень хорошо объясняется в документации. Я слышал о том, что люди ненужно переписывают целые библиотеки, думая, что им нужно изменить каждый вызов памяти, чтобы сделать его совместимым с MEX. –
Спасибо! Переписывание - это именно то, чего я хотел избежать, поскольку библиотека все еще разрабатывается, и это приведет к тому, что у меня будет 2 экземпляра библиотеки, один для работы c/C++ и один для прототипирования MATLAB. –
Помните, что есть еще тонкости, о которых я не совсем уверен. Например, если файл Mex прерван (например, через ошибку), память, выделенная с помощью стандартных методов C *, может * не быть должным образом освобождена ... дальнейший ввод этой точки от людей в курсе будет оценен! –