使用MATLAB mex将矢量分配给另一个矢量时出现分割错误

Segmentation fault when assigning vector with another vector using MATLAB mex

本文关键字:错误 分割 另一个 分配 MATLAB mex 使用      更新时间:2023-10-16

这是错误在执行过程中出现的地方:

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

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

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

现在这个问题是有时它会出现分段错误,所以有什么建议可以解决吗?(S1不为空,S[check].S始终为空)。

由于这是C++,请使用Cache *C = new Cache[K*T*T];。当创建每个Cache时,需要初始化vector<int> S,因此使用new来完成此操作。malloc唯一做的就是分配字节块,但不初始化内容。

当你完成delete[] C时,不要忘记它。

还可以看看这篇关于C++中struct的文章,它可能会通过去掉typedef来简化结构定义。