See #299.
Files:
MyClass.m
private/
MyClass_.cpp
Compile the MEX-file as usual mex -largeArrayDims MyClass_.cpp
(preferrably with C++11).
Running on R2016b/Windows/VS2015, I get this:
>> obj1 = MyClass(10);
[M] ctor begin
-- DLL_PROCESS_ATTACH: hModule=0x3c3a0000
[C] MEX begin id=0
[C] MyClass ctor id=0
-- lock
[M] ctor end
>> obj2 = MyClass(20);
[M] ctor begin
[C] MEX begin id=0
[C] MyClass ctor id=0
-- lock
[M] ctor end
>> clear mex
>> clear all
[M] dtor begin
[C] MEX begin id=1
-- unlock
[C] MEX end 1
[C] MyClass dtor id=0
[M] dtor end
[M] dtor begin
[C] MEX begin id=2
-- unlock
[C] MEX end 2
[C] MyClass dtor id=0
[M] dtor end
[C] MEX atexit. size(map)=0
-- DLL_PROCESS_DETACH: hModule=0x3c3a0000
This is what I get in R2014a/Windows/VS2010:
>> obj1 = MyClass(10);
[M] ctor begin
-- DLL_PROCESS_ATTACH: hModule=0x3c3a0000
[C] MEX begin id=0
[C] MyClass ctor id=0
-- lock
[M] ctor end
>> obj2 = MyClass(20);
[M] ctor begin
[C] MEX begin id=0
[C] MyClass ctor id=0
-- lock
[M] ctor end
>> clear mex
>> clear all
[M] dtor begin
[C] MEX begin id=1
-- unlock
[C] MEX end 1
[C] MyClass dtor id=0
[M] dtor end
[M] dtor begin
[C] MEX begin id=2
-- unlock
[C] MEX end 2
[C] MyClass dtor id=0
[M] dtor end
>> clear all
[C] MEX atexit. size(map)=0
-- DLL_PROCESS_DETACH: hModule=0x3c3a0000
Notice how in R2014a clear all
attempts to unload mex-files before clearing the variables, which is why a second clear all
was needed.