我的程序继续崩溃时,x = 2
和y = 6
cellChargeTime[x][y].push_back(0);
任何想法如何解决这个问题或什么可能导致这个崩溃。
vector<int> **cellChargeTime;
cellChargeTime = new vector<int>*[xMax]; //xMax = 40
for (int x=0; x<xMax; x++)
cellChargeTime[x] = new vector<int> [yMax]; //yMax = 40
for (int x=0; x<xMax; x++){
for (int y=0; y<yMax; y++){
for (int i=0; i< numRuns; i++){ //numRuns = 1
cellChargeTime[x][y].push_back(0); // Crashes at x = 2; y = 6
}
}
}
所示的代码没有问题,它工作得很好(如果您在使用cellChargeTime
时有足够的delete[]
语句)。
但是,我建议使用一种不同的内存管理方法:
vector<vector<int> > cellChargeTime;
cellChargeTime.resize(xMax);
for (int x=0; x<xMax; x++)
cellChargeTime[x].resize(yMax);
填充向量的循环完全没有改变:
for (int x=0; x<xMax; x++){
for (int y=0; y<yMax; y++){
for (int i=0; i< numRuns; i++){ //numRuns = 1
cellChargeTime[x][y].push_back(0);
}
}
}