C ++ / RAII:这会导致内存泄漏吗?

时间:2014-12-28 22:58:50

标签: c++ matlab memory-leaks mex raii

我有一个奇怪的问题。我用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文件运行时,这会有什么不同吗?

由于

0 个答案:

没有答案