这是执行期间出现错误的地方:
C[check].S = vector<int>(S1);
end C是一个全局结构数组,定义为:
typedef struct C_type{
double e;
vector <int> S;
}Cache;
Cache *C;
现在这个问题有时会出现分段错误错误,所以任何提示都要解决这个问题? (S1
不为空且S[check].S
始终为空。)
答案 0 :(得分:1)
由于这是C ++,请使用Cache *C = new Cache[K*T*T];
。创建每个vector<int> S
时,Cache
需要初始化use new
to accomplish this。 malloc
唯一能做的就是分配字节块,但不会初始化内容。
完成后不要忘记delete[] C
。
另请查看this post on struct
in C++,,它可以通过删除typedef
来简化您的结构定义。