Mam zamiar napisać plik Mex, więc mogę użyć mojego kodu C++ w MATLAB.C++/MATLAB Mex wiążące
Ten kod jest zbudowany wokół klasy singleton (w języku C++).
Czytałem, że dla pamięci być trwałe muszę używać MxAlloc isntead of malloc/new, jest to prawda dla wszystkich pamięci używam? Np. Klasa, której używam, używa wektorów, a wektory automatycznie przydzielają nową pamięć za pomocą standardowych mechanizmów.
Tak więc wektor w klasie przydzielonej za pomocą MxAlloc ma problemy z utrzymaniem jego pamięci?
Świetne pytanie - ten problem nie jest bardzo dobrze wyjaśniony w dokumentacji. Słyszałem o ludziach, którzy niepotrzebnie przepisywali całe biblioteki myśląc, że muszą zmienić każde wezwanie pamięci, aby było kompatybilne z MEX. –
Dziękujemy! Przepisywanie jest dokładnie tym, czego chciałem uniknąć, ponieważ biblioteka jest wciąż rozwijana i spowodowałoby to, że mam 2 instancje biblioteki, jedną dla pracy c/C++ i jedną dla prototypowania MATLAB. –
Pamiętaj jednak, że istnieją dalsze subtelności, których nie jestem do końca pewien. Na przykład, jeśli plik Mex zostanie przerwany (np. Przez błąd), pamięć przydzielona za pomocą standardowych metod C * może * nie zostać prawidłowo zwolniona ... dalsze docenianie tego punktu przez osoby w tym dziale będzie mile widziane! –