使用MATLAB mex将向量与另一个向量分配时的分段错误

时间:2014-09-23 16:51:26

标签: c++ matlab vector segmentation-fault mex

这是执行期间出现错误的地方:

C[check].S = vector<int>(S1);

end C是一个全局结构数组,定义为:

typedef struct C_type{
    double e;
    vector <int> S;
}Cache;
Cache *C;

现在这个问题有时会出现分段错误错误,所以任何提示都要解决这个问题? (S1不为空且S[check].S始终为空。)

1 个答案:

答案 0 :(得分:1)

由于这是C ++,请使用Cache *C = new Cache[K*T*T];。创建每个vector<int> S时,Cache需要初始化use new to accomplish thismalloc唯一能做的就是分配字节块,但不会初始化内容。

完成后不要忘记delete[] C

另请查看this post on struct in C++,,它可以通过删除typedef来简化您的结构定义。