Предположим, у меня есть следующий фрагмент.
int main()
{
int num;
int* cost;
while(cin >> num)
{
int sum = 0;
if (num == 0)
break;
// Dynamically allocate the array and set to all zeros
cost = new int [num];
memset(cost, 0, num);
for (int i = 0; i < num; i++)
{
cin >> cost[i];
sum += cost[i];
}
cout << sum/num;
}
` `delete[] cost;
return 0;
}
Хотя я могу перемещать оператор delete
внутри цикла while
для моего кода, для понимания целей, я хочу знать, что происходит с кодом, как он писал. Разделяет ли С++ разные пространства памяти каждый раз, когда я использую оператор new
?
Ли оператор delete
удаляет только последний выделенный массив cost
?