[英]Dynamic Array Allocation Random Crashing
我一直在嘗試在運行時了解指針和分配空間。 我決定將我的較早的任務之一(天氣溫度陣列)更改為動態分配的陣列。 我想我快要完成了,但是每次我運行它並輸入一個溫度時,我的程序都會崩潰而沒有任何警告。 我想了解為什么它崩潰了。
int dayNumber;
double fahrenheit = 0;
double cTemperature = 0;
const double MAXIMUM_TEMPERATURE = 60;// constants for mix/max
const double MINIMUM_TEMPERATURE = -90 ;
const int MAXIMUM_DAYS = 365;
const int MINIMUM_DAYS = 1;
double *ptrTemperatures;
cout << "How many days would you like to enter? ";
dayNumber = myValidation::GetValidInteger(MINIMUM_DAYS, MAXIMUM_DAYS);
try
{
double *ptrTemperatures = new double[dayNumber];
}
catch(exception e)
{
cout << "Failed to allocate memory: " << e.what() << endl;
}
cout << "\n\nTEMPERATURE REPORTER\n____________________________\n Please Enter the temperature for each day.";
for(int dayCount = 0; dayCount < dayNumber; dayCount++){
cout << "Celsius Temperature for Day " << (dayCount + 1) << ": ";
ptrTemperatures[dayCount] = myValidation::GetValidDouble(MINIMUM_TEMPERATURE, MAXIMUM_TEMPERATURE);
}
delete[] ptrTemperatures;
return 0;
您應該按以下方式更改分配:
try
{
ptrTemperatures = new double[dayNumber];
}
您在try
子句中聲明了一個名為ptrTemperatures
的新變量。 這是您要分配的那個。 try
之外的變量保持未分配和未初始化狀態,因此您正在訪問隨機存儲器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.