【发布时间】:2021-12-07 23:31:37
【问题描述】:
我正在尝试生成数据并将它们放入单独的文件中 这是代码的一部分,它给了我一个堆栈大小错误。我尝试调整编译器以更改堆栈大小并抑制警告消息,但它不起作用。 当我运行代码时,它不会创建输出文件并继续运行而不给出输出。 请问如何解决这个问题?
这是我的代码:
double generateWindData(double windData[4])
{
int avgWindSpeed = windData[0];
int gust = windData[1];
int simulationDuration = windData[2];
int stepSize = windData[3];
int stepCounter = simulationDuration / stepSize + 1;
ofstream windFile;
windFile.open("WindSpeedData.txt", ios::out);
if (windFile.fail())
{
cerr << "WindSpeedData.txt could not be opened." << endl;
exit(-1);
}
int upperLimit = avgWindSpeed + gust;
int lowerLimit = avgWindSpeed - gust;
int randomWindSpeeds = rand() % ((upperLimit - lowerLimit + 1) + lowerLimit);
double simulatedSpeeds[10000];
int* initialSpeeds = new int[stepCounter];
int* times = new int[stepCounter];
int time = 0;
for (int i = 0; i < stepCounter; i++)
{
initialSpeeds[i] = randomWindSpeeds;
simulatedSpeeds[i] = initialSpeeds[i];
times[i] = time;
windFile << times[i] << ' ' << initialSpeeds[i] << endl;
time += stepSize;
}
ofstream finalFile;
finalFile.open("WindSimulation.txt", ios::out);
if (finalFile.fail())
{
cerr << "WindSimulation.txt could not be opened." << endl;
exit(-1);
}
for (int i = 0; i < stepCounter; i++) {
finalFile << times[i] << ' ' << simulatedSpeeds[i] << ' ';
if (simulatedSpeeds[i] != initialSpeeds[i])
{
finalFile << '1' << endl; //this outputs 1 to WindSimulation.txt if storm takes place
}
else {
finalFile << endl;
}
}
finalFile.close();
}
【问题讨论】:
-
simulatedSpeeds[i] != initialSpeeds[i]永远不可能是真的。你所有的价值观都是一样的;他们是randomWindSpeeds。 -
int* initialSpeeds = new int[stepCounter];和int* times = new int[stepCounter];存在内存泄漏。请考虑改用std::vector。
标签: c++ arrays function stack-overflow