私はMexファイルを書くつもりです。だから私のC++コードをMATLABで使うことができます。C++/MATLAB Mexバインディング
このコードは、シングルトンクラス(C++)で構築されています。
私はメモリが永続的であることを読んだことがあります.Malloc/newのMxAlloc isnteadを使用する必要があります。これは、使用しているすべてのメモリに当てはまりますか?つまり、私が持っているクラスはベクトルを使い、ベクトルは標準的なメカニズムを使って新しいメモリを自動的に割り当てます。
MxAllocを使って割り当てられたクラスのベクトルは、メモリを保持するのに問題がありますか?
偉大な質問 - この問題はあまりよくドキュメントで説明されていません。私は、MEX互換にするために各メモリコールを変更する必要があると考えて、ライブラリ全体を不必要に書き直す人々について聞いてきました。 –
ありがとうございます!ライブラリはまだ開発中で、私はライブラリのインスタンスが2つ、c/C++ワーク用とMATLABプロトタイプ用の2つのインスタンスを作成するので、私が避けたかったのと同じものです。 –
しかし、私が完全にはわからない微妙なことがあることを心に留めてください。たとえば、Mexファイルが中断された場合(例えばエラーが発生した場合)、標準のCメソッドで割り当てられたメモリは適切に割り当て解除されないかもしれません。 –