저는 Mex 파일을 작성하려고합니다. 그래서 MATLAB에서 C++ 코드를 사용할 수 있습니다.C++/MATLAB Mex 바인딩
이 코드는 싱글 톤 클래스 (C++)를 기반으로 작성되었습니다.
나는 메모리가 지속적이어야한다는 것을 읽었습니다. malloc/new의 MxAlloc isntead를 사용해야합니다. 사용하는 모든 메모리에 대해 사실입니까? 즉, 내가 가진 클래스는 벡터를 사용하고 벡터는 표준 메커니즘을 사용하여 자동으로 새 메모리를 할당합니다.
MxAlloc을 사용하여 할당 된 클래스의 벡터가 메모리를 유지하는 데 문제가 있습니까?
위대한 질문 -이 문제는 설명서에 잘 설명되어 있지 않습니다. MEX와 호환되도록 각 메모리 호출을 변경해야한다고 생각하면서 불필요하게 전체 라이브러리를 다시 작성하는 사람들에 대해 들었습니다. –
고마워요! 재 작성은 라이브러리가 아직 개발 중이기 때문에 피하고 싶었던 부분이었습니다. 라이브러리의 인스턴스가 두 개 (하나는 c/C++ 작업용, 하나는 MATLAB 프로토 타입 용)가되었습니다. –
마음에 비록 내가 확실히 모르고있는 미묘한 점이 더있다. 예를 들어, Mex 파일이 인터럽트되면 (예를 들어 오류를 통해), 표준 C 메소드 *를 통해 할당 된 메모리는 적절히 할당 해제되지 않을 수 있습니다 ...이 지점에 대한 추가 정보는 알고있는 사람들로부터 인정 될 것입니다! –