簡體   English   中英

動態數組分配隨機崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM