我在访问 std 向量的内存时遇到问题。
我首先定义一个结构(在头文件中):
typedef struct Systems {
// other variables...
vector <double> sum;
} System;
我需要一个系统集合,并且每个向量总和必须包含 num 双精度数,因此,在主要内容中,我写道:
System * system;
system = (System*)malloc(DIM_ENSEMBLE*sizeof(System));
for (i =0; i< DIM_ENSEMBLE; i++) {
//...
system[i].part_sum.resize(num);
//...
}
从这一点开始,我一使用
System[0].part_sum[0]
初始化向量我收到一个分段错误程序。
如果在 gdb 我尝试
(gdb) print system[0].part_sum[0]
我得到:
$2 = (double &) @0x200000003: <error reading variable>
我使用保留或分配器而不是调整大小获得了相同的错误。我还检查了向量的容量
cout << system[0].part_sum.capacity();
我播种有很多空间......
怎么了?这是内存管理的问题吗?
一个。