我从使用GMP的C ++代码和一些uint64_t(我在winXP 32位上)编译了一个mex文件。
这个C ++代码在C ++中完美运行。
但我注意到当我在Matlab中运行mex文件进行一些输入时它就会挂起(它只是挂起,我必须终止进程)。
我不明白,如果我使用-nojvm Matlab模式运行它,它就能完美运行。 所以我猜它与Java虚拟机有关。我已经尝试将堆限制增加到1024mo,但它没有解决问题。
当我挂起时手动跟随Matlab运行时,C ++指令似乎在没有解释的情况下停止(不是无限循环或其他东西)。
每当我增加java堆限制时,Matlab进程内存似乎也会增加。但是,如果我在经典的main.cpp C ++文件中运行完全相同的代码,它似乎不会用作内存。
真的很奇怪。