我有一个奇怪的问题。我用C ++编写了一些MEX / Matlab函数。在我的电脑上一切正常。但是,使用该机构的集群,代码有时会在没有任何错误的情况下停止运行(创建一个核心文件,表示"超出CPU限制时间")。不幸的是,在集群上我无法真正调试我的代码,我也无法重现错误。
我所知道的是,错误仅发生在非常大的运行中,即需要大量内存时。因此我的假设是我的代码有一些内存泄漏。
我能想到的唯一真实的部分是以下几点:
#include <vector>
using std::vector;
vector<int> createVec(int length) {
vector<int> out(length);
for(int i = 0; i < length; ++i)
out[i] = 2.0 + i; // the real vector is obviously filled different, but it's just simple computations
return out;
}
void someFunction() {
int numUser = 5;
int numStages = 3;
// do some stuff
for(int user = 0; user < numUser; ++user) {
vector< vector<int> > userData(numStages);
for(int stage = 0; stage < numStages; ++stage) {
userData[stage] = createVec(42);
// use the vector for some computations
}
}
}
我现在的问题是:这个位是否会产生内存泄漏,或者这是由于RAII(我认为是这样)而导致的? MATLAB专家的问题:当作为mex文件运行时,这会有什么不同吗?
由于